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

django-rest-framework edit data after validation

我的序列化器上有几个字段,我已经重写了序列化器上的 validate 方法来执行一些对象级验证。

问题是在验证之后,我需要编辑最终数据,然后再将其传递给创建函数。目前,我正在这样做:

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 但我不知道如何事先进行验证。

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

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