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()”?
谢谢
答案 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