在序列化器类中,我定义了两个属性,第三个属性可以从这两个属性派生出来。请看下面的代码
class ItemNameSerializer(NestedCreateUpdateMixin, ModelSerializer):
nested_child_field_name = 'attribute_names'
nested_child_serializer = AttributeNameSerializer
attribute_names = AttributeNameSerializer(many=True)
class Meta:
model = ItemName
fields = '__all__'
从上面的代码中,我们可以看到
attribute_names = AttributeNameSerializer(many=True)
可由
[nested_child_field_name] = nested_child_serializer(many=true)
所以我的问题是
可能的解决方案可以有两种类型
重写一些ModelSerializer
方法。
B.任何python类的广义解。
请尝试提供这两种类型的解决方案(如果可能的话)(并且可能是其他类型的?)
发布于 2020-11-05 02:16:08
我自己找到答案了。
serializer
的具体答案:
原来django rest框架工作从实例的deepcopy
初始化字段(无关)
但是可以重写序列化程序的__init__
方法,并在self.fields
中添加字段。在我的例子中,我是在NestedCreateUpdateMixin
( nested_child_field_name
和nested_child_serializer
已经可用)中这样做的。
请参阅以下代码
def __init__(self, *args, **kwargs):
super(NestedCreateUpdateMixin, self).__init__(*args, **kwargs)
self.fields[self.nested_child_field_name] = self.nested_child_serializer(many=True)
https://stackoverflow.com/questions/64644811
复制