Django loaddata 忽略已存在的对象

13

我有一个带有条目列表的装置,例如:

[
  {
    "fields": {
      "currency": 1,
      "price": "99.99",
      "product_variant": 1
    },
    "model": "products.productprice",
    "pk": 1
  },
  {
    "fields": {
      "currency": 2,
      "price": "139.99",
      "product_variant": 1
    },
    "model": "products.productprice",
    "pk": 2
  }
]

这只是每个条目的初始数据(价格可能会改变)。我想能够向夹具添加另一个条目,并使用loaddata加载它,但不更新已经存在于数据库中的条目。

有没有什么方法可以做到这一点?类似于--ignorenonexistent,但适用于现有条目。

1个回答

1

如果你保持json中的pk这样,你将始终覆盖product.productprice中的前两条记录。

我会使用"pk: null"。 这样,每次加载时都会创建新的记录。

所以如果你想创建一个新的价格:

[
  {
    "fields": {
      "currency": 1,
      "price": "99.99",
      "product_variant": 1
    },
    "model": "products.productprice",
    "pk": 1
  },
  {
    "fields": {
      "currency": 2,
      "price": "139.99",
      "product_variant": 1
    },
    "model": "products.productprice",
    "pk": 2
  },
  {
    "fields": {
      "currency": 4,
      "price": "9.99",
      "product_variant": 1
    },
    "model": "products.productprice",
    "pk": null
  }
]

前两条记录始终相同,但如果您已经添加了第三条记录(pk:3),并且最后一节中将创建一个新的productprice,其pk为4。

顺便说一下:如果您的currency字段是另一个具有自动递增的主键,则也可以在那里放置“null”,将生成一个新的主键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接