django视图 - 所有类别和所有条目

时间:2013-10-08 21:19:53

标签: django django-models django-templates django-views

我正在尝试在一个视图中构建一个包含所有模型类别和相关条目的页面。我按照django class based views for all categories with all entiresGet 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

2 个答案:

答案 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 %}

您可以在related objects here

上阅读更多内容

答案 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个实例的名称。