gpt4 book ai didi

python - 处理 django 模型中的重复项

转载 作者:行者123 更新时间:2023-11-30 22:18:47 24 4
gpt4 key购买 nike

这是我的位置对象

class Location(models.Model):
country = models.CharField(max_length=255)
city = models.CharField(max_length=255, unique=True)
latitude = models.CharField(max_length=255)
longitude = models.CharField(max_length=255)

class Meta:
unique_together = ('country', 'city')

这是我在其中创建位置的 View ,

class LocationView(views.APIView):
def post(self, request):
serializer = LocationSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

现在,在保存新位置时,如果数据库抛出重复错误,那么我不想写入新值,而是获取已经存在的数据并将其作为成功响应消息返回。从某种意义上说,我想添加另一个 else 子句。我不知道如何在 django 中执行此操作。任何帮助表示赞赏。

最佳答案

get_or_create() 怎么样?

请参阅此处引用其工作原理 https://docs.djangoproject.com/en/2.0/ref/models/querysets/#get-or-create

请注意使用created来区分它只是getcreate new情况的可能性:

obj, created = Person.objects.get_or_create(
first_name='John',
last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)},
)

关于python - 处理 django 模型中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com