django post_save 导致 IntegrityError - 重复条目
django post_save causing IntegrityError - duplicate entry
我需要帮助来解决这个问题 IntegrityError at /admin/gp/schprograms/add/
(1062, "Duplicate entry '65' for key 'PRIMARY'")
我正在尝试向 table SchProgramForStates
中插入一行(每当新条目添加到模型中时 SchPrograms
) 有两列 state_id
(从 django 会话中获取)和 program_id
试图从 SchPrograms
模型 class 中获取。当我只保存 SchProgram
table 时它工作正常所以我觉得问题出在下面的代码上。请帮我解决这个问题。
@receiver(post_save, sender=SchPrograms, dispatch_uid="my_unique_identifier")
def my_callback(sender, instance, created, *args, **kwargs):
state_id = state_id_filter #its a global variable
if created and not kwargs.get('raw', False):
pfst_id = SchProgramForStates.objects.create(program_id=instance.program_id, state_id=state_id)
pfst_id.save(force_insert=True)
if created and not kwargs.get('raw', False):
try:
pfst_id = SchProgramForStates.objects.create(program_id=instance.program_id, state_id=state_id)
except:
pass
尝试使用 try 块并查看,或者您可以使用 get 或 create 方法
if created and not kwargs.get('raw', False):
pfst_id = SchProgramForStates.objects.get_or_create(program_id=instance.program_id, state_id=state_id)
我需要帮助来解决这个问题 IntegrityError at /admin/gp/schprograms/add/
(1062, "Duplicate entry '65' for key 'PRIMARY'")
我正在尝试向 table SchProgramForStates
中插入一行(每当新条目添加到模型中时 SchPrograms
) 有两列 state_id
(从 django 会话中获取)和 program_id
试图从 SchPrograms
模型 class 中获取。当我只保存 SchProgram
table 时它工作正常所以我觉得问题出在下面的代码上。请帮我解决这个问题。
@receiver(post_save, sender=SchPrograms, dispatch_uid="my_unique_identifier")
def my_callback(sender, instance, created, *args, **kwargs):
state_id = state_id_filter #its a global variable
if created and not kwargs.get('raw', False):
pfst_id = SchProgramForStates.objects.create(program_id=instance.program_id, state_id=state_id)
pfst_id.save(force_insert=True)
if created and not kwargs.get('raw', False):
try:
pfst_id = SchProgramForStates.objects.create(program_id=instance.program_id, state_id=state_id)
except:
pass
尝试使用 try 块并查看,或者您可以使用 get 或 create 方法
if created and not kwargs.get('raw', False):
pfst_id = SchProgramForStates.objects.get_or_create(program_id=instance.program_id, state_id=state_id)