如果要使用序列化程序中的其他传入字段计算一个隐藏字段,
然后需要使用serializer\u字段。上下文['request']。数据
此“数据”将在“set\u context()”之前进行验证,因此您可以在安全环境中使用它。
我希望它能帮助别人。
class DefineNoteType:
def set_context(self, serializer_field):
# setting field "type", calculated by other serializer fields
data = serializer_field.context['request'].data
subscriber = data.get('subscriber', None)
connection = data.get('connection', None)
if subscriber:
self.type = 'subscriber_type'
elif connection:
self.type = 'connection_type'
else:
raise serializers.ValidationError('Custom error.')
def __call__(self):
return self.type
class NoteSerializer(serializers.ModelSerializer):
type = serializers.HiddenField(default=DefineNoteType())