Как сделать пункт меню Django ModelForm выбранным по умолчанию? - PullRequest
10 голосов
/ 08 марта 2009

Я работаю над приложением Django. Одна из моих моделей, «Пользователь», включает поле «пол», как определено ниже:

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

Я использую ModelForm для создания HTML-формы "новый пользователь". Кажется, моя Google-фу меня подводит - как сделать так, чтобы в этой HTML-форме в раскрывающемся списке по умолчанию был выбран элемент «Мужской»? (то есть selected="selected" для этого элемента.)

Ответы [ 2 ]

16 голосов
/ 09 марта 2009

Если вам нужна пустая форма с выбранным значением по умолчанию, то передайте «исходный» словарь конструктору формы вашей модели, используя имя поля в качестве ключа:

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

-ИЛИ-

Вы можете переопределить некоторые атрибуты ModelForm, используя декларативный характер API форм. Тем не менее, это, вероятно, немного громоздко для этого варианта использования, и я упоминаю это только для того, чтобы показать вам, что вы можете это сделать. Вы можете найти другие варианты использования в будущем.

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

1009 * -ИЛИ- *

Если вы хотите, чтобы ModelForm была связана с конкретным экземпляром вашей модели, вы можете передать «экземпляр» вашей модели, который заставит Django извлечь выбранное значение из этой модели.

form = MyModelForm (instance=someinst)
8 голосов
/ 09 марта 2009

Конечно, default подойдет?

, например

gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M', null=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...