Пользовательская проверка Django ModelForm: как получить доступ к отправленным значениям поля
У меня есть приведенная ниже форма модели, и я хочу добавить пользовательскую проверку в поле с именем "billable_work".
Как получить доступ к полю "проект", которое было отправлено в форме? Я хочу проверить значение проекта ('p' в приведенном ниже примере), но не могу найти правильный синтаксис, чтобы я мог проверить представленное значение. Любая помощь будет оценена.
class EntryForm(forms.ModelForm):
class Meta:
model = Entries
exclude = ('billable_work','notes')
billable_work = forms.BooleanField()
notes = forms.CharField(widget=forms.Textarea,required=False)
def clean_billable_work(self):
b = self.cleaned_data['billable_work']
p = form.fields['project']
if b == True and p == 523:
raise forms.ValidationError(_("Entries cannot be both billable and NONE: Indirect."))
return self.cleaned_data['billable_work']
1 ответ
Я думаю, что вы хотите переопределить метод clean() в вашей модели, а не метод clean определенного поля формы. Из документов -
Этот метод должен использоваться для обеспечения пользовательской проверки модели и для изменения атрибутов вашей модели, если это необходимо. Например, вы можете использовать его для автоматического предоставления значения для поля или для проверки, которая требует доступа к более чем одному полю.
Если вы хотите поместить валидацию в форму, тогда clean()
Метод в форме обеспечивает аналогичную функциональность (см. документы).