在Django的views.py中从for循环选择特定对象
我想在 Django 的 views.py 文件中,从一个循环中逐个选择对象。
views.py
crave = CraveData.objects.filter(person=request.user.id)
for crave1 in crave:
#print crave1
check = Comment.objects.filter(crave=crave1)
comment.model.py
class Comment(models.Model):
comment_owener = models.ForeignKey(User)
crave=models.ForeignKey(CraveData, blank = True,null = True)
reply=models.CharField(max_length=1000, blank = True,null = True)
unique_id= models.IntegerField(max_length=50, blank = True,null = True)
date= models.DateTimeField(auto_now_add=True, blank=True)
def __unicode__(self):
return self.reply
crave.model.py
class CraveData(models.Model):
person = models.ForeignKey(User)
post=models.TextField(blank = True,null = True)
date= models.DateTimeField(auto_now_add=True, blank=True)
def __unicode__(self):
return self.post
在打印 crave1 的时候,我得到了与特定用户相关的所有 crave 数据。在这里,我打印的结果是 Post1 和 Post2。现在我想逐个选择每个 crave,这样我就可以把相关的评论分配给对应的 crave。在这个例子中,我想选择 Post1,这样我就可以把与 Post1 相关的评论分配给它自己。并且我想对该用户所有的 crave 都这样做。
我尝试了以下方法:
crave1.check=Comment.objects.filter(crave=crave1)
所以我得到了这个回复:
[<Comment: reply1>, <Comment: Reply1.1>, <Comment: reply1.3>]
[<Comment: reply2>]
但是
[<Comment: reply1>, <Comment: Reply1.1>, <Comment: reply1.3>]
这些评论是与 Post1 相关的,
[<Comment: reply2>]
而这个评论是与 Post2 的 crave 相关的。
comment.html
<p><strong>{{user.username}} said:</strong></p><br>
{% for crave1 in crave %}
{{crave1}}<br>
{% for pf in check%}
{{pf.reply}}<br>
{% endfor %}
{% endfor %}
所以在浏览器中的结果是:
管理员说:
Post1
回复2
Post2
回复2
基本上,我想为特定用户显示帖子及其相关评论。请帮我解决这个问题。
1 个回答
1
你可以这样使用反向外键关系:
{% for crave1 in crave %}
{{crave1}}<br>
{% for comment in crave1.comment_set.all }}
{{comment.reply}}<br>
{% endfor %}
{% endfor %}
这里有相关的文档。 related_name 和 反向关系。