Django get_or_create returns 错误

Django get_or_create returns False

我正在创建一个填充脚本,从 Mysql数据库到 Django 模型。
我正在循环接收来自 Mysql 的数据,一切顺利。

现在我必须将它写入 Django 数据库...

mdl, succeeded = models.User.objects.get_or_create(
    name=name,
    password=password,
    email=email
)

我正在打印 succeeded 所以我可以看到反馈是什么,但它给我的只是 False

我的 Django 模型 User 已编辑,因此所有字段都可以 blank 并允许 NULL 或具有默认值

我的模型User:

username = models.CharField(max_length=20, blank=True, null=True)
slug = models.SlugField(null=True, blank=True)
email = models.EmailField(unique=True, null=True)
name = models.CharField("First and last name", max_length=100)
uses_metric = models.BooleanField(default=True)
position = models.CharField("Position", max_length=70, blank=True, null=True,)
utility = models.ForeignKey(Utility, default=1, blank=True, null=True)
supplier = models.ForeignKey(Supplier, default=1, blank=True, null=True)
currency = models.ForeignKey(Currency, default=1)
phone = models.CharField("Direct phone number", max_length=40, blank=True,  default='+')
gets_notifications_on_reply = models.BooleanField("Receive notifications", default=False)
memberlist = models.BooleanField("Show member in memberslist", default=True)
registration_date = models.IntegerField(default=floor(time.time()), blank=True, null=True)
is_staff = models.BooleanField(
    _('staff status'),
    default=False,
    help_text=_('Designates whether the user can log into this site.'),
)
is_active = models.BooleanField(
    _('active'),
    default=True,
    help_text=_(
        'Designates whether this user should be treated as active. '
        'Deselect this instead of deleting accounts.'
    ),
)
USERNAME_FIELD = 'email'

请检查您的数据库。这意味着您要从那里查询的用户对象已经存在。这可能是由于对象已经存在或者您的代码没有使用正确的数据库。由于迁移,经常使用多个数据库,这也可能是一个问题。

According to the Django documentationget_or_create() 不是 return 一个对象和一个状态 succeeded 而是一个标志 created,它指示这个对象是否已经新创建的或已经存在于数据库中。如果它已经存在,则 created 标志(代码中的 succeeded)是 False.

如果您想确保错误不是由对象已存在引起的,请取一个 created 为假的数据对,并尝试使用模型的 get() 方法检索它。如果这引发了 DoesNotExist 错误,那么问题就出在其他地方。如果它 return 是一个对象,那么该对象已经存在。