我的序列化程序上有一些字段,我已经覆盖了序列化程序上的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_internal
和to_representation
,但我事先并不知道如何进行验证。
答案 0 :(得分:5)
validate
方法不适合这个。特别是现在在DRF3中,您可以使用create
方法。
def create(self, validated_data):
data = validated_data.copy()
data['a'] = 'updated value'
return super(MySerializer, self).create(**data)