python - Django loaddata 忽略现有对象

标签 python django django-fixtures loaddata

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

[
  {
    "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但对于现有条目。

最佳答案

如果像这样在 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。
顺便说一句:如果您的 货币字段是另一个主键(带自动增量),您也可以在那里放置“null”,将生成一个新的主键。

关于python - Django loaddata 忽略现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53703386/

相关文章:

python - InfluxDB 缺少标签值(putInfluxDB nifi 处理器)

python - 如何在基于外部查询的子查询中创建条件?

python - 如何将正负十进制数列表规范化到特定范围

python - 注释 matplotlib 热图

django - 在 Django Rest Framework 中,如何将值序列化为值数组而不是对象数组?

python - 无法在python3 virtualenv中安装mysqlclient

django - 如何提供存储在 cassandra 数据库中的图像?

mysql - Django 1.1 中大型数据库的 manage.py 数据转储(创建测试数据库)

python - 如何使用 pytest-django 为每个 session 只创建一次用户对象?

django - 测试 Django 时无法加载夹具