为确保用户(无论在何处)使用唯一的电子邮件进行保存,请将此添加到您的模型中:
@receiver(pre_save, sender=User)
def User_pre_save(sender, **kwargs):
email = kwargs['instance'].email
username = kwargs['instance'].username
if not email: raise ValidationError("email required")
if sender.objects.filter(email=email).exclude(username=username).count(): raise ValidationError("email needs to be unique")
请注意,这也确保了非空白电子邮件。然而,这并没有像适当的那样进行表单验证,只是引发了一个异常。