python - Django get_or_create 返回 False

标签 python mysql django populate

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

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

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

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

我的 Django 模型用户已编辑,因此所有字段都可以空白并允​​许NULL或具有默认值

我的模型用户:

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'

最佳答案

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

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

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

关于python - Django get_or_create 返回 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47549788/

相关文章:

python - 使用 django F() 对象更新多列

java - MYSQL 中特定列中的重复项显示为空

php - utf8_general_ci 数据应该如何存储?

mysql - 未找到 SQL 完整性约束父键

python - 无法导入 PIL 的 '_imaging' 模块 : DLL load failed: The specified module could not be found

python - sklearn.linear_model LinearRegression 模块的系数是如何返回的

python - 无法从 'train_unsupervised'(未知位置)导入名称 'fastText'

python - 计算 pandas 行值的变化?

django - 为什么 nginx 接受主机 header 与 server_name 不匹配的请求?

python - Django 预取嵌套表