Django-Rest-Framework - Как заставить дополнительные поля сериализатора модели учитывать глубину - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы понять / контролировать аргумент depth вложенных сериализаторов. Для некоторых полей это работает, для других - нет.

Сериализатор:

class MyUserSerializer(serializers.ModelSerializer):
    cars = CarSerializer(read_only=True, many=True)

    class Meta:
        model = MyUser
        fields = '__all__'
        depth = X

с depth=0 в классе сериализатора:

{
  'name': 'foo',
  'cars': [<list of car ids>]
}

сdepth=1:

{
  'name': 'foo',
  'cars': [<list of car objects>]
}

Если список машин равен ManyToManyField или ForeignKey, все работает. Если в списке автомобилей используется метод User Model, то depth не оказывает влияния.

Что я имею в виду под методом User Model (просто пример из models.py):

class User(models.Model):
  ...
  def cars(self):
     return models.Car.objects.all()

Что бы вы порекомендовали? Моя конечная цель - динамическое изменение depth с использованием параметров запроса, таких как Django Rest Framework: вложенные поля динамической модели сериализатора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...