我可以让Django忽略非PK唯一约束的重复装置吗?

时间:2012-10-29 19:20:52

标签: django django-models

我想要在Django项目中包含一些基本初始数据。它完全适合作为夹具,除了,我可能想要拒绝重复。这意味着我可以将数据重新加载到现有安装中,它只会添加尚不存在的对象。

我在同一个领域使用了自然键和外键,所以没有id碰撞等问题。

可能?我不想写一个JSON导入器,当一个已经存在,并且我的数据已经在一个夹具中。

1 个答案:

答案 0 :(得分:2)

通常fixture包含模型的所有信息,包括主键。这是来自Django网站的example夹具:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

如您所见,它有一个主键。因此,即使你有重复的灯具,只要主键是相同的,无论是要导入的最新灯具,哪一个都会覆盖db中的条目,所以你不应该在db中有任何重复的数据。