2017-08-17 2 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のクエリセットを必要としています。あなただけの)

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') 

答えて

1

を考えています次いで フィルタのように次のフィルタにタプルを渡す ラン= model.objects.filter()。values_list( 'ラン'、=フラットTRUE) を実行残念ながら

+0

ない(hts_run__in =が実行します)。私は基本的にrun1とrun2という2つのランを持っています。すべてのバリアントが両方のランで見つかった、私はちょうど私が望むバリアントを選択しました。たとえば、次の変種1 - RUN2、 variant1 - RUN2 variant2 - RUN1 variant2 - RUN2 variant3 -run1 variant3 - RUN2私は私が欲しいの実行のバリアントがデータフレームであるように選択した : variant1 - run1 variant2 - run1 variant3 - run2 私はこのクエリを実行すると、両方の実行からすべてのバリアントをクエリしているので、それぞれの実行に対してすべてのバリアントを取得します – trouselife

0

代わりのdf.iterrows(:私はそれらをマージする「チェーン」を使用しようとしましたが、私はこのように、あなたが__inフィルタを使用することができます理解していた場合、私は

関連する問題