Вы также можете сделать это, используя модель, если знаете, что проверка будет применяться ко всем объектам этого класса. Чтобы использовать нижеследующее на уровне формы, используйте cleaned_data. Вот пример прямо из документации Django с использованием ValidationError
:
class Article(models.Model):
status = models.CharField(max_length=75, blank=False, null=False)
pub_date = models.CharField(max_length=75, blank=False, null=False)
def clean(self):
# Don't allow draft entries to have a pub_date.
if self.status == 'draft' and self.pub_date is not None:
raise ValidationError('Draft entries may not have a publication date.')
# Set the pub_date for published items if it hasn't been set already.
if self.status == 'published' and self.pub_date is None:
self.pub_date = datetime.date.today()
Ссылка: Модель Чистый экземпляр , Валидаторы Джанго
Вот пример формы:
class SimpleForm(forms.ModelForm):
def clean(self):
cleaned_data = super(SimpleForm, self).clean() # Get the cleaned data from default clean, returns cleaned_data
field1 = cleaned_data.get("field1")
field2 = cleaned_data.get("field2"),
if not field1 and not field2:
raise forms.ValidationError('Please fill in both fields.')
return cleaned_data
Ссылка: Проверка формы и поля