我有这段代码
class BaseSerializer(serializers.ModelSerializer):
unicode = serializers.SerializerMethodField('get_unicode')
class Meta:
fields=('unicode',)
def get_unicode(self):
return 'test'
我希望Base serializer中的所有字段都包含在它的所有子类中
class EntrySerializer(BaseSerializer):
class Meta:
model = models.Entry
fields = ('id', 'start_time', 'end_time')
但它在输出中不包含unicode
是否有任何方法可以在Base Serializer中添加所有字段 自动附加到子类,无需手动添加名称。 我只想在基础
中保留所有类中的公共字段答案 0 :(得分:0)
您可以将BaseSerializer的Meta.fields添加到EntrySerializer的Meta.fields中:
class EntrySerializer(BaseSerializer):
class Meta:
model = models.Entry
fields = ('id', 'start_time', 'end_time') + \
BaseSerializer.Meta.fields
注意: BaseSerializer必须是序列化程序的子类(或具有属性_declared_fields
)。否则,字段unicode
将not be found(不正确配置的例外)。
答案 1 :(得分:-1)
你可以这样做。它将包括基本序列化器的所有字段。
class EntrySerializer(serializers.Modelserializer):
base= BaseSerializer()
class Meta:
model = models.Entry
fields = ('base','id', 'start_time', 'end_time')