【发布时间】:2020-10-30 16:29:36
【问题描述】:
我们有以下型号:
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 框架过滤器,因此它会非常复杂。
【问题讨论】:
-
你的模型
House如何连接到Room你能提供完整的代码吗? -
抱歉,忘记了 :( 现在添加了。
标签: python django django-orm