python - Django 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),您将使用 pk:4 创建一个新的 productprice。
顺便说一句:如果您的货币字段是另一个主键(带自动增量),您也可以在此处输入“null”,将生成一个新的主键。
推荐阅读
- django - 如何在 Django admin 中显示正确的名称对象而不是“XXX 对象”
- python - 如何在保持结构的同时写入预先存在的 xml 文件?
- php - PluginManager::get 无法获取或创建 FileQueryPlugin 的实例
- hyperledger-fabric - 订购者是否存储所有区块链?
- angular - 可观察对象字段作为 Firestore 中的查询参数
- python-asyncio - 测试返回协程的函数包装器
- java - cmd中的scipt在java文件中创建包目录
- python - 具有共享输出的python多处理
- javascript - 从 json 数据创建表
- javascript - 如何将 onClick 事件设置为延迟加载的图形或图像元素