1 回答

TA貢獻1993條經(jīng)驗 獲得超6個贊
您可以覆蓋模型的clean()方法。作為參考,通過 保存模型實例ORM不會調(diào)用模型的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按照文檔中的描述配置您的項目。您還需要確保使用此模型的表單始終實現(xiàn)字段first_name和last_name,否則您將獲得ValueError.
因此,每次將 aModelForm與User模型結(jié)合使用時clean()都會被調(diào)用。如在Django的UserChangeForm,UserCreationForm等等。
添加回答
舉報