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

标签 python json django error-handling django-fixtures

我已经实现了一些模型并将其迁移到我的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/

    相关文章:

    python - 有条件分箱

    python - 将字符串列表转换为元组列表

    java - 将数组反序列化为自定义列表实现的 Jackson 全局设置

    php - json_decode 是舍入 float ,我该如何防止呢?

    python - 找到两个图像像素值的差异,然后根据差异创建新图像

    python - 当在 tk Button 中使用图像时,Button 消失

    python - Django SMTP 错误 : authentication failed: authentication failure

    python - 允许 HH :MM kind of input in a django DateTimeField instead of long format

    javascript - 服务中的 $http 返回 Angularjs 服务中 $$state 的值

    javascript - Django元素中第三方静态文件推荐的目录布局是怎样的?