已经有一段时间了,但我有一个有点令人困惑的问题。我正在循环从 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 作为要过滤的唯一标识符,并且它在我的模型中设置为唯一。无论我做什么或尝试,只有这两个字段会重复。
好吧,我很不好意思地说我已经弄清楚了。我将模型字段设置为整数,并且用于两个 ID 的整数大于整数字段可以处理的大小。我将它们切换为大整数字段,现在一切都很好!