Django / REST:在对象级验证期间支持部分更新?

时间:2015-08-27 17:04:49

标签: django django-views django-rest-framework

让我们说,我有一个执行对象级验证的序列化程序:

class AnimalSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Animal
        fields = ('id', 'type', 'feathers')

    def validate(self, data):
        if data['type'] != 'bird' and data['feathers'] != null:
            raise ValidationError({'feathers': 'Only supported by birds!'})
        return data

支持部分更新的最佳方式是什么,即使用patch方法的REST请求?

我天真的做法是手工完成:

    def validate(self, data):
        data['type'] = data.get('type') or self.instance.type
        data['feathers'] = data.get('feathers') or self.instance.feathers
        if data['type'] != 'bird' and data['feathers'] != null:
            raise ValidationError({'feathers': 'Only supported by birds!'})
        return data

但我认为这很混乱且容易出错。还有更优雅的解决方案吗?

更新:看起来这需要一些澄清。我要求在对象级验证期间支持部分更新,即validate方法内的良好做法。我没有询问如何部分更新。我知道那个!

0 个答案:

没有答案