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

  • Post author:
  • Post category:其他


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

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



版权声明:本文为u010377372原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。