django-rest-framework在验证后编辑数据

nor*_*tpy 2 django validation serializer django-rest-framework

我的序列化程序上有几个字段,我已经覆盖了validate序列化程序上的方法来进行一些对象级验证.

问题是在验证之后,我需要在将最终数据传递给create function之前编辑它.目前,我这样做:

class MySerializer(serializers.ModelSerializer):

    def validate(self, attrs):
        # Some lengthy validation with attrs['a'] and attrs['b'] and attrs['c']

        # if validated
        attrs['a'] = updated_a
        attrs['b'] = updated_b
        attrs['c'] = updated_c
        return attrs
Run Code Online (Sandbox Code Playgroud)

验证后必须进行更新.我想知道是否有更好的方法来处理这个问题.

我可以继承Field并提供自定义to_internal,to_representation但我不知道如何事先进行验证.

mar*_*dev 5

validate方法不是最好的地方.特别是现在在DRF3中,您可以使用create方法.

def create(self, validated_data):
    data = validated_data.copy()
    data['a'] = 'updated value'
    return super(MySerializer, self).create(**data)
Run Code Online (Sandbox Code Playgroud)