gpt4 book ai didi

python - Django 'null value in column'

转载 作者:行者123 更新时间:2023-11-29 14:23:34 26 4
gpt4 key购买 nike

我尝试保存用户的出生日期,但出现““dob”列中的空值违反了非空约束”错误。

模型.py:

class Profile(models.Model):
user = models.OneToOneField(User, unique=True)

nickname = models.CharField(max_length=32)
dob = models.DateField(null=False)
sex = models.BooleanField(null=False)

这里我尝试生成随机用户:

def create_random_users(userCount=1000):
random.seed()

for i in range(0, userCount):
sex = random.randint(0, 1)
name = random.choice(names[sex])

email = "{0}{1}@mail.com".format(name, i)
user = soc_models.User.objects.create_user(email, email, password='password')
user.save()

userProfile = soc_models.Profile.objects.create()
userProfile.user = user
_year = random.randrange(1962, 1995)
_month = random.randrange(1, 12)
_day = random.randrange(1, calendar.monthrange(_year, _month)[1])
userProfile.dob = datetime.datetime(_year, _month, _day)

userProfile.sex = random.randrange(0, 1)
userProfile.city = random.randrange(4000000)
userProfile.country = random.randrange(230)
userProfile.save()

谢谢。

最佳答案

create方法被记录为“一种创建对象并一步保存所有对象的便捷方法”。因此,当示例数据创建脚本中的以下语句运行时:

userProfile = soc_models.Profile.objects.create()

它试图将一个空的 Profile 对象保存到数据库中。由于此时您尚未设置 dob 属性,因此您触发了 NOT NULL 约束。

避免这种情况的两种方法是:

  1. 通过构造函数创建对象,这样它就不会立即保存到数据库中。
  2. 通过 create 的关键字参数为所有字段提供值。

关于python - Django 'null value in column',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com