Python 更新或创建Django 1.10
嗨,我有来自API的实时数据,因为我们有相同的SKU,在多个市场中,我需要一个组合PK,SKU,国家, 我知道Django不支持这一点,所以我正在使用update_或_create函数 我的问题是,随着数量值的变化,数据会不断重复Python 更新或创建Django 1.10,python,django,updates,Python,Django,Updates,嗨,我有来自API的实时数据,因为我们有相同的SKU,在多个市场中,我需要一个组合PK,SKU,国家, 我知道Django不支持这一点,所以我正在使用update_或_create函数 我的问题是,随着数量值的变化,数据会不断重复 country merch quantity sku USA CC 2807 1005 B00VQVPRH8 USA CC 2806 1004 B00VQVPRH8 以下是保存数据的调用: obj, created = FBAInve
country merch quantity sku
USA CC 2807 1005 B00VQVPRH8
USA CC 2806 1004 B00VQVPRH8
以下是保存数据的调用:
obj, created = FBAInventory.objects.update_or_create(
Account=merchant["company"],
ASIN=ASIN,
TotalSupplyQuantity=TotalSupplyQuantity,
InStockSupplyQuantity=InStockSupplyQuantity,
FNSKU=FNSKU,
EarliestAvailability=EarliestAvailability,
defaults={'SellerSKU': SellerSKU, 'Country': merchant["country"]},
)
如果我使用的函数不正确,我想更新SKU/国家/地区行,我不想使用不同数量值的副本。我知道我可以使用get,但我想利用这个函数,所以我不必编写条件语句。默认值是否应该保存更新值,kwarg是否应该保存要匹配的值
答复:
obj, created = FBAInventory.objects.update_or_create(
Account=merchant["company"],
ASIN=ASIN,
FNSKU=FNSKU,
defaults={'SellerSKU': SellerSKU, 'Country': merchant["country"],
'TotalSupplyQuantity':TotalSupplyQuantity,'InStockSupplyQuantity':InStockSupplyQuantity, 'EarliestAvailability':EarliestAvailability }
)
根据MrName建议我相信所有提供的关键字参数都将创建匹配条件。由于您将数量作为关键字参数传递,因此该方法正在查找具有该数量的现有记录,而没有找到该记录,因此创建了一个副本 如果将数量参数移动到默认值,则代码应根据所需的搜索条件(例如account)成功定位现有记录,然后更新数量