首页 > 解决方案 > 根据请求验证(Django Rest 框架)序列化器字段

问题描述

我正在尝试基于 Request 对象验证 DRF 序列化程序 CharField。必须根据其他数据库值检查提供的值的唯一性,这些值根据请求进行过滤。

我尝试设置一个 to_representation 方法,但它在检索数据时也会运行。

标签: pythondjangodjango-rest-framework

解决方案


你在谈论这样的事情吗?

class FooSerializer(serializers.Serializer):
    bar = serializers.CharField(max_length=100)
    filter1 = serializers.CharField(max_length=100)
    filter2 = serializers.CharField(max_length=100)

    def validate(self, data):
        print('bar value:', data.get('bar'))
        print('filter1 value:', data.get('filter1'))
        print('filter2 value:', data.get('filter2'))
        # Put your conditions and queries here and raise serializers.ValidationError() if they don't match
        return data
serializer = FooSerializer(data=request.data)
serializer.is_valid(raise_exception=True)

推荐阅读