Django无法访问模型中的所有对象

时间:2013-10-16 05:30:52

标签: python django object model

我的观点如下:

class PageView(DetailView):
    queryset = Page.objects.all()
    template_name = 'page.html'
    def get_context_data(self, **kwargs):
        context = super(PageView, self).get_context_data(**kwargs)
        context['category'] = Category.objects.all()
        context['categoryitem'] = CategoryItem.objects.all()
        return context

在模板中我尝试执行给定的上下文变量,如{{ category }},它打印出[<Category: Something not so interesting>] aka模型名称+它的标题,我假设标题被打印出来,因为我设置了{{ 1)}在model.py中,但我无法访问给定对象的任何其他字段。 __unicode__(self): return self.title是空白的,其他一切都是空白的。我怎样才能访问这些?

3 个答案:

答案 0 :(得分:2)

您的代码是:

context['category'] = Category.objects.all()

所以它应该是:

context['categories'] = Category.objects.all()

在你的模板中:

{% for category in categories %}
  {{ category.name }}
{% endfor %}

您在测试中得到的输出是有道理的:

[<Category: Something not so interesting>]

这是一个只有一个条目的数组,这个条目是类Category的对象,它的字符串表示是“Something not ...”

答案 1 :(得分:0)

您需要遍历该类别,因为它是查询集。例如。在你的模板中,你可以做到

<ul>
{% for c in category %}
  <li> {{ c }} </li>
{% endfor %}
</ul>

答案 2 :(得分:0)

模板中的

category是queryset(对象列表)而不是单个对象。你需要迭代它

{%for c in category %}
    {{c.id}} : {{ c.other_attribute }}
{%endfor%}