Django:如何不返回所有模型字段

时间:2019-06-19 13:11:21

标签: python django

我正在使用Django系统,其中每个模型都有一个关联的序列化程序(相当标准)。

在一个模型中,序列化器如下:

class ThingSerializer(ModelSerializerWithFields):
    class Meta:
        model = Thing
        fields = "__all__"

和模型:

class Thing(models.Model):
    class Meta:
        ordering = ("a", "b")


    thing_id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
    a = models.FloatField(null=True, blank=True, default=None)
    b = models.FloatField(null=True, blank=True, default=None)

我要实现一个系统:如果a的字段Thing不为空,则返回字段b(例如,在GET请求中) ,如果a为空,则不返回b。 我该如何(在哪里)执行此操作?

1 个答案:

答案 0 :(得分:2)

您可以在序列化程序上覆盖to_representation()方法。像这样:

class ThingSerializer(serializers.ModelSerializer):
    ...

    def to_representation(self, instance):
        data = super().to_representation(instance)
        if instance.a is None:
            del data['b']
        return data