带有 null=True、blank=True、unique=True 的 Django admin EmailField 保存空字符串 ("") 而不是 null

问题描述 投票:0回答:1

当我将 Django EmailField 与

null=True, blank=True, unique=True
一起使用时,管理员保存空字符串 ("") 而不是 null。所以我收到“具有此电子邮件地址的用户已存在”。错误。

正如这个ticket所说,这个问题必须解决,当我使用CharField而不是EmailField时就可以了。有什么办法可以解决这个问题吗

python django django-models
1个回答
0
投票

要解决此问题,您需要在将数据保存到数据库之前将空字符串转换为

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)

希望这对你有一点帮助。

© www.soinside.com 2019 - 2024. All rights reserved.