2017-08-17 75 views
0

我有一個相關值的數據框,我需要一起查詢我的對象。我可以遍歷這個相關值列表並將它們提供給我的對象,然後將它們附加到列表中,但是這給了我一個單獨的查詢集列表。有沒有一種方法,我可以一起閱讀我的元組沒有循環,並獲得一個單一的查詢集?如何讓多個元組獲取單個Django查詢集

相關的值是hts_run和variant。在這種情況下,相同的變量值具有多個hts_run值。我的數據幀已經刪除了不需要的hts_run值,所以我有正確的變量對應於正確的hts_run值。

,這裏是我的時刻代碼:

var_obj = [] 
for i, row in df.iterrows(): 
    v_obj = row['variant'] 
    var_obj.append(VariantSampleRun.objects.filter(sample=current_sample, 
    hts_run=row['run']).select_related('variant').order_by('variant')) 

但是我需要一個var_obj queryset的其他功能。我曾嘗試使用「鏈」,合併他們,但我想

回答

1

,如果我理解你可以使用__in過濾器,像這樣:

runs = [row['run'] for i, row in df.iterrows()] 
var_obj = VariantSampleRun.objects.filter(sample=current_sample, 
    hts_run__in=runs).select_related('variant').order_by('variant') 
+0

不幸的是沒有。我基本上有兩個運行:run1和run2。所有的變體都在兩次運行中找到,我只是選擇了我想要的變體。例如:變體1 - RUN2, VARIANT1 - RUN2 VARIANT2 - RUN1 VARIANT2 - RUN2 VARIANT3 -run1 VARIANT3 - RUN2 我選擇,這樣在我想運行的變種是在數據幀: VARIANT1 - run1 variant2 - run1 variant3 - run2 因此,當我執行該查詢時,我仍然爲每次運行獲取所有變體,因爲我正在查詢兩次運行的所有變體 – trouselife

0

代替df.iterrows的(地)你只是執行 運行= model.objects.filter()。values_list( '運行',平=真) 然後傳遞元組到下一個過濾器等過濾器 (hts_run__in =運行)

相關問題