天天看点

Django REST Framework 使用post_create时,报错 django.db.utils.IntegrityError: UNIQUE constraint failed:

出现在这种错误的原因是:

def perform_create(self, serializer):
    instance = serializer.save(user=self.request.wxuser)
    return instance      

如上代码所示,当我们通过这种方式去设置user时,如果保存的对象与user的关系是一对一的关系,那么当user已经与对象关联,再次进行save时则会报错,Unique constraint failed。

解决方案是:

添加一层校验,然后抛出异常

def perform_create(self, serializer):
    queryset = BusinessCard.objects.filter(user=self.request.wxuser)
    if queryset.exists():
        raise ValidationError('名片已存在')
    instance = serializer.save(user=self.request.wxuser)
    return instance