我有一个带有条目列表的装置。例如:
[
{
"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/