Вы можете переопределить метод модели clean()
.Для справки, сохранение экземпляра модели через ORM
не вызывает метод модели clean()
.
Поэтому, когда вы создаете подкласс AbstractUser
:
from django.core.exceptions import ValidationError
class User(AbstractUser):
def clean(self):
super().clean()
if not self.first_name and not self.last_name:
raise ValidationError({
'first_name': ValidationError('Please set this', code='error1'),
'last_name': ValidationError('... or this', code='error2')
})
Не забудьтенастройте ваш Django
проект, как описано в документах .Вам также необходимо убедиться, что ваши формы, использующие эту модель, всегда реализуют поля first_name
и last_name
, в противном случае вы получите ValueError
.
Так что каждый раз, когда вы используете ModelForm
в сочетании сВаша User
модель clean()
будет вызвана.Например, Django
UserChangeForm
, UserCreationForm
и т. Д.