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 documentation、get_or_create()
不是 return 一个对象和一个状态 succeeded
而是一个标志 created
,它指示这个对象是否已经新创建的或已经存在于数据库中。如果它已经存在,则 created
标志(代码中的 succeeded
)是 False
.
如果您想确保错误不是由对象已存在引起的,请取一个 created
为假的数据对,并尝试使用模型的 get()
方法检索它。如果这引发了 DoesNotExist
错误,那么问题就出在其他地方。如果它 return 是一个对象,那么该对象已经存在。
我正在创建一个填充脚本,从 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 documentation、get_or_create()
不是 return 一个对象和一个状态 succeeded
而是一个标志 created
,它指示这个对象是否已经新创建的或已经存在于数据库中。如果它已经存在,则 created
标志(代码中的 succeeded
)是 False
.
如果您想确保错误不是由对象已存在引起的,请取一个 created
为假的数据对,并尝试使用模型的 get()
方法检索它。如果这引发了 DoesNotExist
错误,那么问题就出在其他地方。如果它 return 是一个对象,那么该对象已经存在。