如何在django rest框架中包含Base serializer中的字段?

时间:2015-05-15 10:35:46

标签: python django django-rest-framework

我有这段代码

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中添加所有字段 自动附加到子类,无需手动添加名称。 我只想在基础

中保留所有类中的公共字段

2 个答案:

答案 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)。否则,字段unicodenot be found(不正确配置的例外)。

答案 1 :(得分:-1)

你可以这样做。它将包括基本序列化器的所有字段。

class EntrySerializer(serializers.Modelserializer):
    base= BaseSerializer()
    class Meta:
        model = models.Entry
        fields = ('base','id', 'start_time', 'end_time')