所以我有一个模型,
class Category(SmartModel):
item=models.ManyToManyField(Item)
title=models.CharField(max_length=64,help_text="Title of category e.g BreakFast")
description=models.CharField(max_length=64,help_text="Describe the category e.g the items included in the category")
#show_description=check box if description should be displayed
#active=check box if category is still avialable
display_order=models.IntegerField(default=0)
def __unicode__(self):
return "%s %s %s %s " % (self.item,self.title, self.description, self.display_order)
正如您所看到的,它有一个很多领域
item=models.ManyToManyField(Item)
我想返回模板中的所有项目,这是我的views.py
def menu(request):
categorys= Category.objects.all()
items= categorys.all().prefetch_related('item')
context={
'items':items,
'categorys':categorys
}
return render_to_response('menu.html',context,context_instance=RequestContext(request))
这是我在模板中的表现,
<ul>
{% for item in items %}
<li>{{ item.item }}
</li>
</ul>
{% endfor %}
毕竟,这就是它在我的网页中返回的内容,
<django.db.models.fields.related.ManyRelatedManager object at 0xa298b0c>
我做错了什么,我真的环顾四周但都徒劳无功,希望你能帮助我并提前感谢你
答案 0 :(得分:0)
尝试使用:
categorys= Category.objects.prefetch_related('item').all()
然后在模板中:
{% for category in categorys %}
{% for item in category.item.all %}
{{ item }}
{% endfor %}
{% endfor %}
答案 1 :(得分:0)
确实,你有很多经理人。您需要实际查询某些内容......例如all()
{% for item in items %}
{% for i in item.item.all %}
{{ i }}
{% endfor %}
{% endfor %}
根据您的变量命名,我认为您将prefetch_related
的结果混淆为一堆item
。它实际上是返回一个Category对象的QuerySet。
因此,将它们称为类别会更直观。
{% for category in categories %}
{% for item in category.item.all %}
{{ item }} {# ...etc #}