gpt4 book ai didi

python - Django 1.8夹具完整性错误-非null约束违反了模型字段

转载 作者:行者123 更新时间:2023-12-03 08:53:19 25 4
gpt4 key购买 nike

我已经实现了一些模型并将其迁移到我的postgreSQL9.4数据库作品中。我有一些模特。例如,SkillLevelRuleModel:

class SkillLevelRule(models.Model):
skillLevelRuleID = models.AutoField(primary_key=True)
skillCategoryID = models.ForeignKey(SkillCategory, default=1)
skillLevelID = models.ForeignKey(SkillLevel, default=1)
threshold = models.IntegerField()
validFrom = models.DateTimeField(default=datetime.now)
validTo = models.DateTimeField(auto_now_add=False, auto_now=True)

现在我对以下字段有疑问:
validTo = models.DateTimeField(auto_now_add=False, auto_now=True)

因此,在创建模型时,它在开始时就没有任何值(value),但是一旦更新了模型中的条目,就应该更新validTO。

一旦创建了模型(makemigrations,migration),我想加载initial_data.json来加载初始数据。

可悲的是我得到以下错误:
Could not load rewardsystem.SkillLevelRule(pk=6): null value in column "validTo" violates not-null constraint
DETAIL: Failing row contains (6, 2, 2016-02-11 08:46:29.267201+00, null, 1, 1).

我的.json文件和该模型的相应条目如下所示:
{
"model": "rewardsystem.SkillLevelRule",
"pk": 6,
"fields":{
"skillCategoryID" : "1",
"skillLevelID" : "1",
"threshold" : "2"
}
},

我不明白为什么会发生这种情况以及如何预防。我不希望在开始时设置validTo字段。为什么?此模型可以保存规则或说阈值。当实例化模型时,它们从一开始就有效。也许在系统运行的某个时候,管理员喜欢更改某些规则。因此,他应该能够指定直到某条规则为有效(validTO)时为止。

最佳答案

validTo = models.DateTimeField(auto_now=True,blank=True,null=True)

auto_now_add与auto_now相似,但是在创建记录时仅添加一次“now”。如果使用auto_now,它将像auto_now_add功能一样保存为初始添加,然后在每次记录更新时继续更新为“now”。

似乎在此字段中有一个null,不应该为null,这可能是由于此错误定义所致。
  • 修复该字段。
  • 加载数据
  • 遍历所有对象,然后保存()。这会将现在的日期时间添加到丢失的行中。
  • 现在,您可以删除blank = True,null = True,进行迁移和迁移。

  • 要循环并保存(第3步),请创建以下python脚本并从shell运行它:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") #copy from manage.py
    os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
    import django
    django.setup()
    from mysite.myapp.models import SkillLevelRule
    q = SkillLevelRule.objects.all()
    for s in q:
    q.save()

    关于python - Django 1.8夹具完整性错误-非null约束违反了模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35334863/

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