Mad*_*813 1 python django django-rest-framework
所以,我一直在寻找一种模式或标准一段时间,但我似乎找不到。
假设我有一些序列化器:
WhateverSerializer(serializers.ModelSerializer):
class Meta:
model = Whatever
fields = (
'special',
'field_1',
'field_2'
#a bunch more...
)
Run Code Online (Sandbox Code Playgroud)
我希望仅针对该字段special而不是其他字段有一些特殊的更新行为。有没有一种方法可以覆盖update 而不必像这样重做整个更新方法?
def update(self, instance, validated_data):
special_behaviour(instance.special)
instance.field_1 = validated_data.get('field_1', instance.field_1)
instance.field_2 = validated_data.get('field_2', instance.field_2)
#a bunch more...
Run Code Online (Sandbox Code Playgroud)
我尝试过调用该ModelViewSet.update方法,但它实际上采用的参数与您在视图集中覆盖的参数不同,并且我不确定如何准确地将我拥有的参数传递到该方法中。
只需从已验证数据的字典中删除键,进行计算,然后使用 super 函数调用继承的更新方法来进行.save()更改。
def update(self, instance, validated_data):
special = validated.data.pop('special')
instance.special = perform_calc(special)
return super().update(instance, validated_data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1679 次 |
| 最近记录: |