循环中的 Django update_or_create 会复制字段值,但只是几个字段

问题描述 投票:0回答:1

已经有一段时间了,但我有一个有点令人困惑的问题。我正在循环从 api 提取一些数据并通过 django 执行 update_or_create 调用。

for product in response['products']:
    for variant in product['variants']:
        print(variant['product_id'])
        obj, created = Product.objects.update_or_create(
            sku=variant['sku'],
            defaults={
                'name': product['title'],
                'price': variant['price'],
                'sku': variant['sku'],
                'shopify_product_id': variant['product_id'],
                'shopify_variant_id': variant['id'],
                'weight_grams': variant['grams'],
            },
        )

在循环过程中,您会注意到我正在打印变体产品 id 的值。

print(variant['product_id'])

在控制台中,我看到不同变体产品 ID 的打印结果都是正确的。

7396903682207
7405275381919
7405275775135
7405273579679
7405278101663
7396921475231
9034125279391

但是在数据库中,每行的

variant['product_id']
variant['id']
都是相同的。然而其他详细信息,例如名称价格都是正确的,并且每行都不同。

我一生都无法弄清楚为什么会发生这种情况。我使用 sku 作为要过滤的唯一标识符,并且它在我的模型中设置为唯一。无论我做什么或尝试,只有这两个字段会重复。

python django for-loop django-queryset
1个回答
0
投票

好吧,我很不好意思地说我已经弄清楚了。我将模型字段设置为整数,并且用于两个 ID 的整数大于整数字段可以处理的大小。我将它们切换为大整数字段,现在一切都很好!

© www.soinside.com 2019 - 2024. All rights reserved.