Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新或创建Django 1.10_Python_Django_Updates - Fatal编程技术网

Python 更新或创建Django 1.10

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

嗨,我有来自API的实时数据,因为我们有相同的SKU,在多个市场中,我需要一个组合PK,SKU,国家, 我知道Django不支持这一点,所以我正在使用update_或_create函数

我的问题是,随着数量值的变化,数据会不断重复

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)成功定位现有记录,然后更新数量