我有一个信号发送给带有对象的函数x
。
# It easier and quicker then to do a complex update procedure.
def x(obj):
Element.objects.filter(id=obj.id).delete()
if obj.is_active:
Element.objects.create(**new_element(object))
@receiver(post_save, sender=Object)
@receiver(post_delete, sender=Object)
def update_element_receiver(sender, instance, **kwargs):
x(instance.object)
如果有多个用户使用相同的ID发送此信号,则该函数会在创建步骤中引发IntegrityError
。
错误为duplicate key value violates unique constraint "app_object_pkey" DETAIL: Key (id)=(163497) already exists.
我在一次交易中尝试但没有帮助。
数据库是PostgreSQL 9.6 Django 1.8.x
防止此错误并确保元素对象存在的最佳方法是什么?