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_internal
和 to_representation
但我不知道如何事先进行验证。
validate
方法不是最好的地方。特别是现在在 DRF3 中,您可以使用 create
方法。
def create(self, validated_data):
data = validated_data.copy()
data['a'] = 'updated value'
return super(MySerializer, self).create(**data)
我的序列化器上有几个字段,我已经重写了序列化器上的 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_internal
和 to_representation
但我不知道如何事先进行验证。
validate
方法不是最好的地方。特别是现在在 DRF3 中,您可以使用 create
方法。
def create(self, validated_data):
data = validated_data.copy()
data['a'] = 'updated value'
return super(MySerializer, self).create(**data)