django post_save导致IntegrityError-重复输入

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

我需要帮助解决问题IntegrityError at /admin/gp/schprograms/add/ (1062, "Duplicate entry '65' for key 'PRIMARY'") ,我试图在表SchProgramForStates中插入一行(每当将新条目添加到模型SchPrograms中时),该表具有两列state_id(从django会话中获取) )和program_id尝试从SchPrograms模型类中获取。当我仅保存SchProgram表时,它可以正常工作,因此我感觉下面的代码有问题。请帮助我解决此问题。

@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)
django python-3.x django-signals
1个回答
1
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.