Джанго: Как не вернуть все поля модели - PullRequest
1 голос
/ 19 июня 2019

Я использую систему 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 Ответ

2 голосов
/ 19 июня 2019

Вы можете переопределить метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...