Выбор поля сериализатора в просматриваемом API DRF

Например, моя модель и ее сериализатор:

class Person(models.Model):
    name = models.CharField(max_length=150)
    age = models.IntegerField()
    city = models.CharField(max_length=150)


class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = '__all__' # to select these fields on the browsable API

Итак, моя цель - динамически выбирать поля сериализатора для размещения на просматриваемом API. Я думал добавить класс filterset с полем MultipleChoiceFilter для имен полей сериализатора.

class PersonFilter(filters.FilterSet):
    FIELD_CHOICES = (
        (0, 'name'),
        (1, 'age'),
        (2, 'city'),
    )
    field = filters.MultipleChoiceFilter(label='fields',
                                        choices=FIELD_CHOICES)

    class Meta:
        model = Person
        fields = ['field']

Что я пытаюсь сделать:

Выбор полей из json-запроса:

{
    "name": "Jack",
    "age": 30,
    "city": "London",
},

с помощью фильтра на просматриваемом API :

получение подмножества полей:

{
    "name": "Jack",
    "city": "London",
}

На данный момент я не смог найти, как манипулировать переменной полей сериализатора из класса filterset. Также я не знаю, является ли это хорошей практикой или есть более простой способ.

Вернуться на верх