1

我正在尝试在一个视图中构建一个包含所有模型类别和相关条目的页面。我按照这里的 django class based views 的提示对所有类别的所有条目和这里获取所有类别和类别中的项目,但我仍然无法让它工作。有任何想法吗 ?

- 楷模

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)

-- 模板 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

4

2 回答 2

0

这里

{% for entry in category.entry_set.all %}
    {{ category.name}}
{% endfor %}

应该

{% for entry in category.feed_set.all %}
    {{ entry.name}}
{% endfor %}

{{ category.name}}forloop for 内部entries没有显示正确的名称。

还有,什么是entry_set?如果您没有指定 a 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 %}

您可以在此处阅读有关相关对象的更多信息

于 2013-10-08T21:23:22.743 回答
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实例的名称。

于 2013-10-08T21:23:47.717 回答