notnull约束违反了Django Fixture Integrity Error Model字段

2024-09-30 20:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在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)

现在我对以下字段有问题:

^{pr2}$

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

一旦我创建了模型(makemigrations,migrate),我想加载一个初始的_数据.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)。在


Tags: 模型truedefaultautothreshold规则modelsnull
1条回答
网友
1楼 · 发布于 2024-09-30 20:24:10
validTo = models.DateTimeField(auto_now=True,blank=True,null=True)

auto-unw-now-add与auto-unu-now类似,但它只在创建记录时添加一次“now”。如果您使用auto_now,它将为初始添加保存,就像auto-unu-now-add功能一样,然后在每次更新记录时继续更新到“now”。在

这个字段好像有一个null,不应该是null,可能是因为这个错误的定义。在

  1. 修理场地。在
  2. 加载数据
  3. 遍历所有对象,然后save()。这将向缺少的行添加now datetime。在
  4. 现在可以删除空白=true、null=true、MakMigRigs和迁移。在

要循环并保存(步骤3),请创建以下python脚本并从shell运行它:

^{pr2}$

相关问题 更多 >