2010-02-03 96 views
3

我是新來的Django和蟒蛇...我可以在django模板中使用別名字段名嗎?

我有一個模型,其中包括10個通用字段attrib_00至attrib_09。

我將這些字段作爲上下文傳遞給django模板字符串。

我想在模板中使用更有意義的名稱。

模板字符串是從另一個模型中獲取的,我想要添加一個包含逗號分隔的關聯別名列表的字段。這個想法是列表映射到attrib_00的第一個別名,第二個到attrib_01 ...

我想我需要在渲染前修改上下文,以便通用密鑰替換爲別名。

我在正確的軌道上嗎?

有沒有更好的方法?

感謝, 埃德

附:

(添加評論按鈕不是爲我工作?)

我真的沒有任何的代碼呢。也許我應該解釋我想要達到什麼...

我有一個現有的應用程序寫在delphi,可以幫助我維護大量的易趣列表,我想模擬這是一個Django的/ python的Web應用程序。

每個產品/列表都屬於一個類別,每個類別都有一組屬性。例如,褲子可能有顏色,腰圍和腿長。每個類別的屬性的數量和類型有所不同,但從未超過10.

我可以看到,例如attrib_00如何用於大小在一個類別中,並說金屬在另一個,但然後將堅持使用通用字段名稱在模板中。

只是爲了信息: - 我想我會做任何循環在視圖中多次調用渲染過程之前返回一個響應?

+0

發佈一些代碼!你怎麼弄到琴絃?你如何將它們傳遞給上下文? – 2010-02-03 12:16:28

回答

5

我會說,在從視圖傳遞到模板之前,在上下文中創建別名。沿線的東西:

c = Context({'foo': attrib_01, 'bar': attrib_02, ...}) 

你可以插入一個新的功能,這樣你就不會打破DRY,你很好走。

更新:
只要實際映射此模板內,不是那麼多。畢竟,模板只是一個模板。即將接近像你想工作的唯一的事情是{% with %}塊:

{% with attrib_01 as foo %} 
    <div class="foo">{{ foo }}</div> 
{% endwith %} 

它可能會工作,但我擔心它可能得到相當難看。

+0

這正好符合我的想法,只有你解釋得比我更好。 ; o) 但是,由於模板與我想知道/希望的類別一對一映射,如果也許他們是一種方法來定義模板中的別名? – FxFocus 2010-02-03 16:04:31

+0

爲您添加了一些有關「{%with%}」塊的信息。 – 2010-02-03 16:16:58

+0

是的,我可以看到這將是如何混亂。我會堅持你的第一個建議。謝謝你,埃德。 – FxFocus 2010-02-03 16:46:54

0

如何使用翻譯?

attrib_00 = models.TextField(_('attrib_00'), blank=True, null=True) 

然後根據需要對attrib_00進行不同的翻譯。

+0

不知道翻譯,謝謝你提到它,現在將會研究它。 – FxFocus 2010-02-03 14:35:14

相關問題