从django rest框架序列化器中排除一个字段

Min*_*ana 20 django django-rest-framework

在下面的序列化程序中,我有一个嵌套的serializer [ ContainerSerializer]字段,我想从(容器)中排除一个字段,ContainerSerializer但我不希望任何更改ContainerSerializer.我怎样才能做到这一点?

class BLcontainerMergedSerializer(serializers.ModelSerializer):
    container = ContainerSerializer()
    class Meta:
        model = BLcontainer
Run Code Online (Sandbox Code Playgroud)

Din*_*s91 24

BLContainerSerializer在那里创建另一个序列化器说出并排除字段.然后在你的中使用它BLcontainerMergedSerializer.希望这可以帮助.

class BLContainerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Container
        exclude = ('field1', )


class BLcontainerMergedSerializer(serializers.ModelSerializer):
    container = BLContainerSerializer()

    class Meta:
        model = BLcontainer
Run Code Online (Sandbox Code Playgroud)

  • *尽管问题不属于这个陷阱 - 值得注意的是,您不能在序列化器类上同时拥有字段和排除属性。 (7认同)

Wto*_*wer 6

有一个字段元属性:

class BLcontainerMergedSerializer(serializers.ModelSerializer):
    container = ContainerSerializer()
    class Meta:
        model = BLcontainer
        fields = ('field1', 'field2')
Run Code Online (Sandbox Code Playgroud)

参考:Django REST 文档

  • 这会添加来自“BLcontainer”的字段,而不是来自“container”的字段 (2认同)