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

时间:2015-03-11 07:29:02

标签: django validation django-rest-framework serializer

我的序列化程序上有一些字段,我已经覆盖了序列化程序上的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

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

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

1 个答案:

答案 0 :(得分:5)

validate方法不适合这个。特别是现在在DRF3中,您可以使用create方法。

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