Django, ModelChoiceField () и начальное значение - PullRequest
50 голосов
/ 26 августа 2009

Я использую что-то вроде этого:

field1 = forms.ModelChoiceField(queryset=...)

Как сделать так, чтобы в моей форме отображалось выбранное значение?

Ответы [ 5 ]

83 голосов
/ 26 августа 2009

Если вы хотите установить начальное значение по умолчанию, вы должны определить initial, как и другие поля формы, за исключением того, что вы задаете для него идентификатор .

Скажем, у вас есть field1 вот так:

class YourForm(forms.Form):
    field1 = forms.ModelChoiceField(queryset = MyModel.objects.all() )

тогда вам нужно установить начальную при создании вашей формы следующим образом:

form = YourForm(initial = {'field1': instance_of_mymodel.pk })

вместо:

form = YourForm(initial = {'field1': instance_of_mymodel })

Я также предполагаю, что вы определили __unicode__ для своих моделей, так что это отображается правильно.

22 голосов
/ 24 апреля 2012

Вы можете просто использовать

 field1 = forms.ModelChoiceField(queryset=..., initial=0) 

для выбора первого значения и т. Д. Это более общий способ, чем другой ответ.

9 голосов
/ 30 августа 2012

Времена, когда они изменились:

Начальное значение по умолчанию теперь может быть установлено путем определения initial, как и в других полях формы , за исключением того, что вместо него установлено вместо идентификатора .

Теперь этого будет достаточно:

form = YourForm(initial = {'field1': instance_of_mymodel })

Хотя оба все еще работают.

3 голосов
/ 12 ноября 2015

код

form = YourForm(initial = {'field1': instance_of_mymodel.pk })

и

form = YourForm(initial = {'field1': instance_of_mymodel })

или начальное поле, следующее непосредственно за:

field1 = forms.ModelChoiceField(queryset=..., initial=0) 

Все работы.

Первые два пути переопределят последний путь.

0 голосов
/ 25 сентября 2014

Вы также можете сделать это:

form = YourForm(initial = {'field1': pk })

если вы анализируете свой первичный ключ через строку запроса или через ajax-вызов, не требующий экземпляра, набор запросов уже обработал это для вашего раскрывающегося списка, pk индексирует желаемое состояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...