2017-03-16 69 views
0

列表獲取的重複查詢集的結果列表我有一個名爲簡介如下模型,其中有一個字段中指定的地址Django的 - 從價值

class Profile(models.Model): 
    user = models.OneToOneField(User, primary_key=True) 
    address = models.CharField(max_length=100, blank=True, null=True) 

不管怎麼說,我有這樣的一個,它包含一個列表某些用戶的主鍵。

pks=[1, 1, 2, 1, 3] 

我需要做一個查詢集,其過濾是誰在該列表中的用戶,不論其返回地址的值一個用戶多少次出現在PKS列表。因此,我也做了查詢集如下:

Profile.objects.filter(pk__in=pks).values_list('address', flat=True)) 

的問題是,我得到這樣的:

['address 1', 'address 2', 'address 3'] 

我需要這樣的:

['address 1', 'address 1', 'address 2', 'address 1', 'address 3'] 

PS:我試圖避免使用for循環,因爲pks列表可能會變得非常大,並且對DB不會有效......所以,有什麼幫助?

回答

1

從您的問題看來,您所需要的結果似乎不一定是查詢集,而是從查詢集中檢索的對象列表。

據我所知,沒有辦法直接通過Django的ORM來達到預期的結果。

然而,爲了避免在數據庫上不必要的點擊率,我建議以後查詢到創建所需的列表,例如像這樣:

pks=[1, 1, 2, 1, 3] 
queryset = Profile.objects.filter(pk__in=pks) 
result_list = [queryset.get(pk=item).address for item in pks] 
+0

謝謝你的指教!如果我找不到任何其他方式,我會像你說的那樣做 – rvliscano

+0

不客氣。接受答案將是偉大的,然後:-) –