У нас есть следующие модели:
class House(models.Model):
pass
class Room(models.Model):
house = models.ForeignKey(house)
size = models.IntegerField()
Мы используем Django Rest Framework для сериализации дома и его комнат. Проблема в том, что мы хотим отфильтровать комнаты по размеру. У нас есть набор, в котором мы определяем набор запросов:
def get_queryset():
return House.objects.filter(...)
вещи, которые мы пробовали:
House.objects.filter(room_set__size__gte=10)
- но это дает дома с комнатами больше 10, но это на самом деле не отфильтровывать комнаты House.objects.filter().annotate(big_rooms=FilteredRelation('room', condition=Q(room_set__size__gte=10)))
это казалось наиболее актуальным, но не имело никакого эффекта: (
Я также рассматривал возможность использования .extra()
, но кажется, что он устарел так что не лучшее решение ... Я знаю, что могу использовать пользовательский sql, однако мы используем фильтры Django rest, и поэтому это было бы довольно сложно.