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

我在同一字段上使用过自然键和外键,因此没有id冲突等问题。

可能的?我不想编写一个JSON导入器,而我的数据已经在一个灯具中。

最佳答案

通常,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中不应有任何重复的数据。

09-25 17:25