11

私はDjangoアプリに取り組んでいます。私のモデルの1つである「ユーザー」には、以下に定義する「性別」フィールドが含まれています。

GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)

ModelFormを使用して「新しいユーザー」のHTMLフォームを生成しています。私のGoogle-fuは私を失敗させているようです-このHTMLフォームのドロップダウンボックスでデフォルトで「男性」アイテムを選択するにはどうすればよいですか?(つまりselected="selected"、このアイテムについてもそうです。)

4

2 に答える 2

16

デフォルト値が選択された空白のフォームが必要な場合は、フィールドの名前をキーとして使用して、モデルフォームのコンストラクターに「初期」ディクショナリを渡します。

form = MyModelForm (initial={'gender':'M'})

-また-

Forms APIの宣言型の性質を使用して、ModelFormの特定の属性をオーバーライドできます。ただし、これはこのユースケースではおそらく少し面倒であり、それができることを示すためだけに言及します。将来、これの他の用途が見つかるかもしれません。

class MyModelForm (forms.ModelForm):
    gender = forms.ChoiceField (choices=..., initial='M', ...)
    class Meta:
        model=MyModel

-また-

モデルの特定のインスタンスにバインドされたModelFormが必要な場合は、モデルの「インスタンス」を渡すことができます。これにより、Djangoはそのモデルから選択された値を取得します。

form = MyModelForm (instance=someinst)
于 2009-03-08T21:45:42.670 に答える
8

確かdefaultにトリックを行いますか?

例えば

gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M', null=True)
于 2009-03-08T21:19:46.913 に答える