当我将 Django EmailField 与
null=True, blank=True, unique=True
一起使用时,管理员保存空字符串 ("") 而不是 null。所以我收到“具有此电子邮件地址的用户已存在”。错误。
正如这个ticket所说,这个问题必须解决,当我使用CharField而不是EmailField时就可以了。有什么办法可以解决这个问题吗
要解决此问题,您需要在将数据保存到数据库之前将空字符串转换为
None
。实现此目的的一种方法是重写模型中的 save()
方法。
from django.db import models
class MyUser(models.Model):
email = models.EmailField(null=True, blank=True, unique=True)
def save(self, *args, **kwargs):
# Convert empty string to None for the email field
if self.email == '':
self.email = None
super(MyUser, self).save(*args, **kwargs)
希望这对你有一点帮助。