gpt4 book ai didi

django - 如何因违反 unique_together 约束而返回 400 错误?

转载 作者:行者123 更新时间:2023-12-02 20:31:28 26 4
gpt4 key购买 nike

我正在使用 Django-Rest-Framework 并拥有一个具有以下约束的模型:

unique_together = ("title", "owner")

当遇到该错误时,服务器会向客户端发送 500 响应,但我想返回 400 错误和约束的详细信息,以便我可以将其显示给用户。这是序列化器代码:

def create(self, validated_data):
title = validated_data.pop('title')
poll = Poll.objects.create(title=title,
slug=slugify(title),
**validated_data)
p = Poll.objects.get(id=poll.id)
[p.tags.add(tag) for tag in validated_data['tags']]
return poll

所有者来自请求(即客户端用户):

def perform_create(self, serializer):
"""

:param serializer:
:return:
"""
serializer.save(owner=self.request.user,
follows=[])

我不确定将验证代码放在哪里。

最佳答案

您可以按照documentation使用内置的rest_framework.validators.UniqueTogetherValidator

from rest_framework.validators import UniqueTogetherValidator

class PollSerializer(serializers.Serializer):
# ...
class Meta:
validators = [
UniqueTogetherValidator(
queryset=Poll.objects.all(),
fields=['owner', 'title']
)
]

关于django - 如何因违反 unique_together 约束而返回 400 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599470/

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