2012-03-25 42 views
0

我有這樣的model.py:如何查看有外鍵字典本身在模板級別在Django

class EventTypeCategory(models.Model): 

     name = models.CharField(max_length=50, verbose_name="Name") 
     user = models.ForeignKey(User, verbose_name="User") 
     Message_slug = models.SlugField(blank=True, verbose_name="Message") 
     sub_categories = models.ForeignKey('self', verbose_name="Self-Categories", null =True, blank = True) 

鑑於 - 行業標準領域外鍵本身

我有一個view.py這樣的:

@login_required 
def eventcateg_detail(request): 
    ca = EventTypeCategory.objects.values() 
    return render_to_response('events/categ.html',{ 
     'obj': ca, 
     }) 

而CA返回dictionary如下:

[{'Message_slug': u'ngcg', 'sub_categories_id': 124L, 'user_id': 1L, 'id': 146L, 'name': u'ngcg'}, {'Message_slug': u'lkn', 'sub_categories_id': 146L, 'user_id': 1L, 'id': 149L, 'name': u'lkn '}] 

我想從categ.html的每個字典內容中打印「子類別,消息」和「名稱」的值。而sub_categories正在返回「id」(指向自己的外鍵)。我是新手,在Django和也有看起來類似的問題,但它並沒有爲我工作:(

數據應該是打印這樣的categ.html:

Message: Name: Sub-categories: 
ngcg  ngcg  (values which refer to foriegn key) 

回答

2

通常情況下,我們使用QuerySet.all (),它返回的不是QuerySet.values模型的實例對象,()。

如果你有一個叫做foo字段是一個ForeignKey,默認 值()調用將返回名爲foo_id字典鍵,因爲這個 是隱藏的模型屬性的名稱,它存儲實際值 (foo屬性是指相關模型)。

檢查文檔: django.db.models.query.QuerySet.values

@login_required 
def eventcateg_detail(request): 
    ca = EventTypeCategory.objects.all() 
    return render_to_response('events/categ.html',{ 
     'objs': ca, 
     }) 

現在,obj是一個EventTypeCategory實例。

{% for obj in objs %} 
    {{obj.Message_slug}}, {{obj.name}}, {{obj.sub_categories.name}} 
    ngcg,     ngcg,   (name of instance which refer to foriegn key) 
{% endfor %} 
+0

不打印任何東西 – 2012-03-26 01:12:12

+0

對不起,我犯了一個錯誤。只需使用'objs'作爲List。 – wangeek 2012-03-26 02:04:50

+0

此外,根據文檔,values()忽略select_related並導致多個查詢而不是連接。 – okm 2012-03-26 02:21:16