2009-11-12 95 views
1

我目前正在使用自定義註釋查詢集的應用程序。目前我有2個網址設置,但我需要爲每個用戶想要彙總數據的字段。這可以手動配置,但它會違反幹!我基本上會有+8個網址,基本上可以做同樣的事情。動態顯示Django模板中的字段值(object.x)

因此,這裏是我做過什麼,

  1. 我有一個創建的自定義模型管理器
  2. 我有一個觀點
  3. 我的URL配置

以上所有作品。

因此,基本上URL配置傳遞給視圖的字段名稱來註釋(由SQL人員分組),視圖做了一些額外的處理,並根據傳遞給它的字段運行自定義模型管理器。

的URL看起來是這樣的:

url('^(?P<field>[\w-]+)/(?P<year>\d{4})/(?P<month>\d+)/(?P<day>\d+)/$','by_subtype', name='chart_link'), 

是分貝,列在查詢集的實際運行時使用。它從視圖傳遞給我的自定義管理器。下面是從管理器的代碼的一個例子:

return self.filter(start_date_time__year=year).filter(start_date_time__month=month).filter(start_date_time__day=day).values(field).annotate(Count(field)) 

此外,我作爲上下文變量傳遞字段的值。這用於動態構建鏈接。但是,問題實際上是循環查詢集並顯示數據。

所以,你的典型模板的代碼如下所示:

{% for object in object_list %} 
{{ object.sub_type }} : {{ object.sub_type__count|intcomma }} 
{% endfor %} 

基本上你已硬編碼領域diplay(即object.x),反正是有動態分配呢?即 如果字段=業務 然後在模板它會自動處理:

{{ object.business }} 

可以這樣做?或者我需要創建幾個URL?還是有更好的方法來實現相同的結果,一個視圖和url動態處理查詢。

您可以在github上找到代碼,現在模板部分正在使用此代碼片段:http://www.djangosnippets.org/snippets/1412/因此,如果您稍後遇到此問題並且想要做類似的事情,請查看github上的代碼段。 :http://gist.github.com/233262

回答

1

這聽起來像你想做的事的東西線:

# in the views.py: 
field = 'business' 


{# in the template: #} 
{{ object.field }} 

,並有object.business值出現在輸出。使用Django模板語言不可能實現這一點。

有定義模板過濾器片段您可以用它來做到這一點,雖然:http://www.djangosnippets.org/snippets/1412/

+0

喜德,是的,這也正是它。我試圖創建一個自定義模板標籤,但我認爲這個問題與模板標籤/模板等被解析的方式有關,該代碼片段看起來像可以工作。會給它一個鏡頭。 – ismail 2009-11-12 21:33:23

+0

感謝這工作.... – ismail 2009-11-12 22:52:51