2011-05-26 119 views
1

我使用django(v.1.2)通用視圖「list_detail」打印存儲在數據庫中的一些對象(模型文章)。在模板中打印鍵/值對象

在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

答案是[here](http://stackoverflow.com/questions/2170228/django-iterate-over -model-instance-field-names-and-values-in-template) – DrTyrsa 2011-05-26 09:48:36

+0

object.fields中的對象是什麼? – 2011-05-26 10:30:12

+0

@Narendra Kamma「object:這個對象,這個變量的名字取決於template_object_name參數,默認情況下它是'object',如果template_object_name是'foo',這個變量的名字就是foo。 [docs](https://docs.djangoproject.com/en/dev/ref/generic-views/#django-views-generic-date-based-object-detail) – DrTyrsa 2011-05-26 10:53:33

回答

0

'queryset':Article.objects.filter(is_public = True)將列表發送到您的模板。 但在模板中,您將它視爲一個Article對象。

'文章':Article.objects.filter(is_public = TRUE)[0]

那麼你就可以訪問文章中的所有項目。但是,我不明白你想用它做什麼。是Article.fields的列表或字典?

0

讓我們通過一個示例 -

我有AS-

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 

注意方法,retlifetime_rating返回lifetimerating對象實例的數值模型解決這個問題。

現在,我們希望在views.py-

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

顯示壽命額定值爲所有產品

的showrating.html文件包含以下代碼snippet-

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

基本上如果你希望顯示一個對象的不同字段,你需要有一個相應的方法調用來返回該字段

off- course還有其他方法可以做到這一點,但這很可能是最簡單和最容易實現的