gpt4 book ai didi

python - 验证序列化器 Django Rest 框架中的外键字段

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:47 24 4
gpt4 key购买 nike

我正在使用 django rest 框架,并有一个 html 表单将数据发送到rest api。我正在对请求数据进行 serializer.is_valid 检查和 save() 。在前端表单中,我有一个 ID 字段,它是序列化器模型中的外键。当运行serializer.is_valid时,它会抛出一个错误,指出外键对象丢失。为了克服这个问题,我尝试使用输入 html 表单中的 id 获取外键对象实例,并将其插入序列化器数据中。

我在序列化器中编写了一个定义 validate_ ,并且假设它在执行 serializer.is_valid() 时运行(根据本教程 - http://www.django-rest-framework.org/api-guide/serializers/#validation )。但这个定义并没有被执行。感谢帮助。

class TeamViewSet(viewsets.ModelViewSet):
serializer_class = TeamSerializer
queryset = Team.objects.all()
def create(self, request, *args, **kwargs):

permission_classes = (
permissions.IsAuthenticated
)
serializer = self.get_serializer(data=request.data)
serializer.is_valid()


return Response(.....)

序列化器

class TeamSerializer(serializers.ModelSerializer):

class Meta:
model = Team
fields = ('id','name','description','leader')

def validate_leader(self, leader_id):
try:
data = Leaders.objects.get(id=leader_id)
except Exception as e:
raise ValidationError(....)
return data

最佳答案

我现在明白了。如果请求数据中不包含该字段,则不会执行验证方法。在我将该字段包含在请求数据中后,该字段的验证方法就会运行。

关于python - 验证序列化器 Django Rest 框架中的外键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37777321/

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