在模板中打印键/值对象

时间:2011-05-26 09:43:02

标签: django django-templates django-views

我正在使用django(v.1.2)通用视图“list_detail”来打印存储在db中的一些对象(Model Article)。

在urls.py中我添加了以下行

urlpatterns += patterns('django.views.generic.list_detail',
url(r'^article/(?P<slug>[\-\d\w]+)/$', 'object_detail', {'slug_field': 'title_slug', 'queryset': Article.objects.filter(is_public=True)}, name='article'),

在相应的模板(article_detail.html)中,我想打印迭代其所有字段的文章。其实我写道:

{% for k,v in object.fields %}
  <p>{{k}}:{{v}}<p>
{% endfor %}

但它不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

'queryset':Article.objects.filter(is_public = True)向您的模板发送一个列表。 但在模板中,您将其视为文章对象。

'article':Article.objects.filter(is_public = True)[0]

然后您可以访问文章的所有项目。但是,我不明白你要用它做什么。 Article.fields是一个列表还是字典?

答案 1 :(得分:0)

让我们通过一个例子来解决这个问题 -

我有一个模型 -

class item(models.Model):
    item_number = models.AutoField(primary_key=True)
    item_name = models.CharField(max_length=200)
    lifetime_rating = models.DecimalField(max_digits=3,decimal_places=1, default=0)
    current_rating = models.DecimalField(max_digits=3,decimal_places=1, default=0)
    lifefeedbacknum = models.IntegerField(default=0)
    currentfeedbacknum = models.IntegerField(default=0)

    def __unicode__(self):
        return self.item_name

    def retlifetime_rating(self):
        return self.lifetime_rating

注意method-retlifetime_rating,它返回对象实例的生命周期值。

现在我们希望显示所有产品的终身评级

在views.py中

-

def showrating(request):
    itemslist= models.item.objects.all()
    return render(request, 'showrating.html', 'sitems' : itemslist)

showrating.html文件包含以下代码段 -

{% for element in sitems %}
        <tr>
            <td>{{ element }}</td>
            <td>{{ element.retlifetime_rating }}</td>
        </tr>
    {% endfor %}

基本上如果你想显示一个对象的不同字段,你需要有一个相应的方法调用来返回该字段

当然还有其他方法可以做到这一点,但这很可能最简单,最容易实现

相关问题