我正在尝试在一个视图中构建一个包含所有模型类别和相关条目的页面。我按照django class based views for all categories with all entires和Get all categories and items in category的提示进行了操作,但我仍然无法使用它。有什么想法吗?
- 模型
class Category(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Feed(models.Model):
name = models.CharField(max_length=100)
url = models.CharField(max_length=100)
category = models.ForeignKey(Category)
user = models.ManyToManyField(User)
def __unicode__(self):
return self.url
- 观看次数
def category_page(request):
object_list = Category.objects.all()
context = {'object_list': object_list,}
return render(request, 'category_page.html', context)
- template category_page.html
{% block content %}
{% for category in object_list %}
{{ category.name }}
{% for entry in category.entry_set.all %}
{{ category.name}}
{% endfor %}
{% endfor %}
{% endblock content %}
我收到所有类别的列表,但没有条目。
感谢 -M
答案 0 :(得分:0)
下面
{% for entry in category.entry_set.all %}
{{ category.name}}
{% endfor %}
应该是
{% for entry in category.feed_set.all %}
{{ entry.name}}
{% endfor %}
for {{ category.name}}
的forloop中的 entries
是没有显示正确名称的内容。
另外,entry_set
是什么?如果未指定related_name
,则需要使用小写模型名称来获取相关对象(在这种情况下为feed_set
)。
这样的事情:
category.feed_set.all
总结一下,
{% block content %}
{% for category in object_list %}
{{ category.name }}
{% for entry in category.feed_set.all %}
{{ entry.name}}
{% endfor %}
{% endfor %}
{% endblock content %}
上阅读更多内容
答案 1 :(得分:0)
如果这是您的实际代码,则问题是模板中的变量名称。
{% for category in object_list %}
{{ category.name }}
{% for entry in category.feed_set.all %}
{{ entry.name}}
{% endfor %}
{% endfor %}
具体来说,您引用entry_set
,但这不是关系的反向名称,因为您的模型名称是Feed
而不是Entry
,并且您尚未声明非默认值related_name
论证。
此外,您正在重新打印类别名称,而不是Feed
个实例的名称。