Я хотел бы понять / контролировать аргумент 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: вложенные поля динамической модели сериализатора