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

Joe*_*Joe 6 django django-models

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

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

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

mik*_*725 -6

通常fixture包含模型的所有信息,其中包括主键。以下是Django 站点中的固定装置示例:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它有一个主键。因此,即使您有重复的固定装置,只要主键相同,无论要导入的最新固定装置是什么,该固定装置都会覆盖数据库中的条目,因此数据库中不应有任何重复的数据。

  • 这并不能真正回答问题。我很惊讶这是被接受的答案。 (36认同)