2013-03-26 62 views
0

我被困在這種狀態:我有分貝位置表。我也有評級表,其中包含每個位置的ID引用每個位置的評級。django - 對象過濾器邏輯

現在我想獲得前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

嘗試了一個循環來對這些5?你有沒有嘗試過這種方法? – CppLearner 2013-03-26 02:52:59

+0

@CppLearner,不,我沒有嘗試過。你的意思是,我循環了5個地點,並根據每個地點的身份證要求評分?但那麼我不會在每一步覆蓋收視率查詢集? – doniyor 2013-03-26 02:57:47

回答

2

您可以使用in來指示值包含在一個列表:

locations_ids = [location.id for location in Locations.objects.all()[:5]] 
all_ratings = Rating.objects.filter(location__id__in=locations_ids) 
+0

很好,你救了我!!!讓我看看這個.. – doniyor 2013-03-26 03:01:21

+0

@ doniyor很高興它幫助;) – 2013-03-26 03:10:34

2

您可以嘗試

all_locations = Locations.objects.all()[:5] 
all_ratings = Rating.objects.filter(of_location__id__in=[location.id for location in all_locations]) 
+0

很酷,讓我試試 – doniyor 2013-03-26 03:01:40