update_or_create上的IntegrityError

时间:2017-06-08 22:46:57

标签: python django

我得到的IntegrityError似乎是不可能的:

ShippingAddress.objects.update_or_create(
    subscription=subscription,
    defaults=address_dict,
)

(其中" subscription"是通过OneToOneField相关的模型的实例)引发错误

IntegrityError: (1062, "Duplicate entry '42' for key 'subscription_id'")

尽管订阅是添加到过滤器的唯一键。更奇怪的是,没有

ShippingAddress.objects.get(
    subscription=subscription,
)

,也不

ShippingAddress.objects.filter(
    subscription=subscription,
)

引发同样的错误。什么可能搞乱了update()调用?

1 个答案:

答案 0 :(得分:0)

错误原因是因为address_dict包含一个" id"生成它时我没注意到的关键。