有没有一种简单的方法可以忽略 django 模型 unique=TRUE 的重复项?

时间:2021-08-01 19:14:21

标签: python sql django

class Reddit_Submission(models.Model):
    submission_id = models.CharField(max_length=32, unique=True)
    submission_time_stamp = models.CharField(max_length=32)
    submission_title = models.CharField(max_length=32)
    submission_score = models.CharField(max_length=32)
    submission_author = models.CharField(max_length=32)
    submission_url = models.CharField(max_length=32)

我的 django 应用程序中有来自我的模型的上述代码示例。我的问题是,如果数据库中已经存在重复的内容,是否有一种简单的方法可以忽略“Example = model.save()”?

谢谢

2 个答案:

答案 0 :(得分:0)

这实际上取决于您希望它们是唯一的上述哪些字段。在确定应该是唯一的字段并将它们设置为“unique=True”后,您可以通过以下方式处理视图请求:

def create(self, request):
     

    try:
        serializer = Reddit_Submission_Serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    
    except:
        return Response(data={'message': "Duplicate field detected"}, status=status.HTTP_400_BAD_REQUEST)

答案 1 :(得分:0)

一种方法是捕获完整性错误并检查是否存在唯一约束消息并忽略它。如果没有,只需再次加注:

from django.db import IntegrityError

try:
    model.save()
except IntegrityError as e:
    if 'UNIQUE constraint' in str(e):
        pass
    raise
相关问题