В моем приложении у меня есть CreateView
, который должен инициализировать некоторые поля модели со значением по умолчанию, отличным от значения по умолчанию, определенного внутри модели.Django - присвоить значение по умолчанию для поля в ModelForm
Я не хочу, чтобы пользователь, чтобы изменить значение, таким образом, я поставил на поле в списке exclude
class AForm(ModelForm):
class Meta:
model = AModel
exclude = ['a_field']
class AView(CreateView):
form_class = AForm
Вопрос: где я установить значение a_field
?
Я попытался определить clean
методы внутри AForm
, как таким образом
class AForm(ModelForm):
[...]
def clean(self):
d = super(AForm, self).clean()
d['a_field'] = 10
return d
однако a_field
устанавливается на то, что его значение по умолчанию определяется в модели, а не 10
. Я также попытался определить clean_a_field
, но это просто не выполнено.
Если удалить a_field
из exclude
списка, то clean
и clean_a_field
будет работать, но форма не будет проверять, если я не сделать некоторые <input name="a_field">
внутри шаблона, который не является оптимальным.
Вы определяете 'clean_a_field' или просто' clean'? – SunnySydeUp
Я пробовал оба. Они оба игнорируются. –
Действительно? Необходимо всегда вызывать чистый метод формы. Альтернативой является переопределение метода сохранения формы. – SunnySydeUp