Как удалить невыделенный элемент при выборе и радио ввода в Django

Если поле модели - это выбор или внешний ключ, виджет на странице - это вход выбора или радио, если вы это укажете. Django помещает "---------" в первый элемент как невыбранное значение. Как я могу отменить это или даже удалить? Я помню, как читал, как это сделать, но больше не могу найти.


person Georgie Porgie    schedule 14.10.2010    source источник


Ответы (3)


См .: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Если для поля модели заданы варианты выбора, тогда для виджета поля формы будет установлено значение «Выбрать», причем варианты будут исходить из вариантов выбора поля модели. Варианты выбора обычно включают пустой вариант, который выбран по умолчанию. Если поле является обязательным, это заставляет пользователя сделать выбор. Пустой вариант не будет включен, если в поле модели указано blank = False и явное значение по умолчанию (вместо этого изначально будет выбрано значение по умолчанию).

person Piotr Duda    schedule 14.10.2010

Из документа форм Django:

По умолчанию виджет <select>, используемый ModelChoiceField, будет иметь пустой вариант вверху списка. Вы можете изменить текст этой метки (которая по умолчанию - «---------») с помощью атрибута empty_label, или вы можете полностью отключить пустую метку, установив empty_label=None:

field2 = forms.ModelChoiceField(queryset=..., empty_label=None)

Если вам нужно сделать это на ModelForm, у меня есть ответ здесь.

person Dominique Guardiola    schedule 17.01.2011
comment
Arrgghhh, решение в ссылке кажется слишком сложным. Думаю, в этом случае лучше прибегнуть к обыкновенной форме. - person Georgie Porgie; 18.05.2011

Если это ModelForm, просто установите default=None в своей модели, например:

choose = models.CharField(max_length=3, choices=choose_dict, default=None)
person Marcio Cruz    schedule 16.01.2011
comment
-1: default используется на уровне базы данных, а не на уровне формы. Это просто означает, что если значение не установлено при создании объекта модели, будет установлено значение None. Опасный совет - person Patrick; 10.05.2014
comment
@Patrick не соответствует действительности (по крайней мере, с Django 1.4). См. stackoverflow.com/a/11721969/898423 - person Eduard Luca; 13.08.2014
comment
Правда, я только что проверил документацию, и, похоже, это не относится к последней версии django docs.djangoproject.com/en/dev/ref/models/fields/ - person Patrick; 13.08.2014