2012-12-15 71 views
2

您好我有一個Django的形式:模板Django中獲得衍生形式的選擇

BAR_CHOICES = (
    ('1', 'Cheers'), 
    ('2', 'The Blue Oyster'), 
    ... 
) 

class ProjectInfoForm(forms.Form): 
    foo = forms.ChoiceField(
     CHOICES = BAR_CHOICES, 
    ) 
    ... 

當然,當我這個數據保存到值存儲在數據庫整數模型。現在,當我從保存的數據中獲取這些值時,它們就是整數。獲取與之相關聯的選擇字符串的最佳方法是什麼?我應該將BAR_CHOICES導入模板嗎?

回答

7

Django提供了一種直接獲取相關字符串的方法。看看here

更新:

例子:

BAR_CHOICES = (
    ('1', 'Cheers'), 
    ('2', 'The Blue Oyster'), 
    ... 
) 

class Project(models.Model): 
    foo = models.PositiveIntegerField(choices=BAR_CHOICES) 
    ... 

在模板中,你可以簡單地做{{project.get_foo_display}}

+0

這不就是一個模式,而不是一種形式。這不是一個模型。 –

+0

@DarwinTech:你到底發送了什麼樣的模板。你能向我們展示視圖代碼嗎? –

+0

'foo'是另一個模型中的一個字段,稱爲項目。所以我將一個項目實例傳遞給模板,並希望執行'{{project.foo}}',但獲得可讀的'BAR_CHOICES'字符串。 –

2

如果你想呈現的選擇在模板中,你可以遍歷form.field.choices

如果你想在模板中選擇一個值的字符串表示,你將不得不在你的視圖或窗體中寫一些可以獲取這些信息的東西。

你可以模仿你的形式get_FOO_display ..

def get_foo_display(self): 
    return dict(BAR_CHOICES)[self.foo] 
+0

然後我可以直接在我的模板中使用這種方法嗎? –

+0

當然。你不能傳遞它的參數(它不需要)。 –