Выбор поля сериализатора в просматриваемом 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. Также я не знаю, является ли это хорошей практикой или есть более простой способ.