0

我陷入了这种状态:我在 db 中有位置表。而且我还有评级表,其中包含每个位置的 id 引用的每个位置的评级。

现在我想获得前 5 个位置及其评级。所以我现在必须触摸 2 个表:位置和评级。

我这样做了:

all_locations = Locations.objects.all()[:5]
all_ratings = Rating.objects.filter(of_location=all_locations.id)

但这似乎是错误的,因为all_locations它是一个包含 5 个位置而不是一个位置的查询集,所以它有 5 个不同的 id。但是我怎样才能实现这个目标呢?:取 5 个位置,并对这 5 个位置中的每一个进行评分。

4

2 回答 2

2

你可以试试

all_locations = Locations.objects.all()[:5]
all_ratings = Rating.objects.filter(of_location__id__in=[location.id for location in all_locations])
于 2013-03-26T02:59:47.503 回答
2

您可以使用in指示该值包含在列表中:

locations_ids = [location.id for location in Locations.objects.all()[:5]]
all_ratings = Rating.objects.filter(location__id__in=locations_ids)
于 2013-03-26T03:00:02.923 回答