Ответ 1
Мне будет интересно увидеть лучшее решение. Для этого я использовал собственный метод в своем сериализаторе. Это немного более подробный, но, по крайней мере, явный.
Некоторые псевдокоды, в которых GarageSerializer будет фильтровать вложенное отношение автомобилей:
class MyGarageSerializer(...):
users = serializers.SerializerMethodField('get_cars')
def get_cars(self, garage):
cars_queryset = Car.objects.all().filter(Q(garage=garage) | ...).select_related()
serializer = CarSerializer(instance=cars_queryset, many=True, context=self.context)
return serializer.data
Очевидно, замените набор запросов тем, что вы хотите. Вам не всегда нужно указывать контекст (я использовал его для извлечения некоторых параметров запроса в вложенном сериализаторе), и вам, вероятно, не нужен .select_related (это была оптимизация).