我有一个迷你博客应用程序和一个回复系统。我想列出所有迷你博客条目,以及他们的回复,如果有的话。 我有views.py
def profile_view(request, id):
u = UserProfile.objects.get(pk=id)
paginator = New.objects.filter(created_by = request.user)
replies = Reply.objects.filter(reply_to = paginator)
return render_to_response('profile/publicProfile.html', {
'object_list': u,
'list':paginator,
'replies':replies
},
context_instance=RequestContext(request))
并在模板中:
<h3>Recent Entries:</h3>
{% for object in list %}
<li>{{ object.post }} <br />
{% for object in replies %}
{{ object.reply }} <br />
{% endfor %}
提及:reply_to是一个ForeignKey到New,New是'迷你博客'表的名称
但它只显示每个博客条目的所有回复,而不是每个条目的回复(如果有的话)
感谢
答案 0 :(得分:3)
首先,请考虑为变量提供合理的名称。 New
,list
和paginator
根本没有描述这些对象究竟是什么 - 在某些情况下,它们会产生误导,就像object_list
一样,它不是列表除了单个项目之外的所有项目。
其次,代码完全符合您的要求(忽略您发布的模板代码实际上无效的事实,因为您没有正确嵌套循环并重新定义object
变量)。您将获得所有条目,所有回复,然后显示每个条目下的所有回复列表。
相反,您显然希望将回复附加到每个条目。因此,请在视图中删除引用Reply
的行,并在模板中使用reverse relationship:
{% for object in list %}
{{ object.post }}
{% for reply in object.reply_set.all %}
{{ reply }}
{% endfor %}
{% endfor %}
最后,正如其他人在回答您的其他问题时所建议的那样,您可以通过阅读Django教程和Django书籍获得良好的服务,这两本书都可以在线免费获得。