我正在使用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 %}
但它不起作用。有什么建议吗?
答案 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 %}
基本上如果你想显示一个对象的不同字段,你需要有一个相应的方法调用来返回该字段
当然还有其他方法可以做到这一点,但这很可能最简单,最容易实现