2

こんにちは、私は Django フォームを持っています:

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

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

もちろん、このデータをモデルに保存すると、値は整数としてデータベースに保存されます。ここで、保存されたデータからこれらの値を取得すると、それらは整数になります。それらが関連付けられている選択文字列を取得するための最良の方法は何ですか。BAR_CHOICES をテンプレートにインポートする必要がありますか?

4

2 に答える 2

7

Djangoは、関連する文字列を直接フェッチする方法を提供します。こちらをご覧ください

アップデート:

例:

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

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

テンプレートでは、簡単に行うことができます{{project.get_foo_display}}

于 2012-12-15T01:14:00.070 に答える
2

テンプレートで選択肢をレンダリングしたい場合は、 を反復処理できますform.field.choices

テンプレートで選択した値の文字列表現が必要な場合は、その情報を取得できるビューまたはフォームに何かを記述する必要があります。

あなたの形でエミュレートできget_FOO_displayます..

def get_foo_display(self):
    return dict(BAR_CHOICES)[self.foo]
于 2012-12-15T01:26:52.847 に答える