我陷入了这种状态:我在db中有位置表。我还有一个评级表,其中包含每个位置的ID对每个位置的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个地点和等级。
答案 0 :(得分:2)
你可以尝试
all_locations = Locations.objects.all()[:5]
all_ratings = Rating.objects.filter(of_location__id__in=[location.id for location in all_locations])
答案 1 :(得分:2)
您可以使用in
表示该值包含在列表中:
locations_ids = [location.id for location in Locations.objects.all()[:5]]
all_ratings = Rating.objects.filter(location__id__in=locations_ids)