2017-05-18 5 views
0

カウントidsの私のリストの中のパーツやパーツの私のクエリーセット。Djangoは私がモデルを持っていると言う、関連するオブジェクトの重なりやクエリセット/リスト

それでは、私は2つの車のオブジェクトを持っているとしましょう:

{ 
    name: 'car1', 
    parts: [1,2,3,4] 
} 

{ 
    name: 'car2', 
    parts: [1,5,6,7] 
} 

その後、私は

{ 
    name: 'car1', 
    parts: [1,2,3,4], 
    parts_overlap: 3 
} 

{ 
    name: 'car2', 
    parts: [1,5,6,7], 
    parts_overlap: 1 
} 

[1,2,3]リストと私のクエリから次のような出力をしたい私はこのようなTIが必要私はそれを注文したいからです。

これは可能ですか?

+0

もう少し説明できますか?注釈の意味は?あなたが望むサンプル出力が役に立つかもしれません。 – gipsy

+0

@gipsy私はもっと明確な例を追加しました –

+0

@gipsy annotateとは、Django ORMの関数annotateを意味します。 –

答えて

1

私はそれを見つけました。

from django.db.models import Count, Case, When, IntegerField 

queryset.annotate(parts_overlap=Count(
    Case(
    When(parts__in=list, then=1), 
    output_field=IntegerField() 
) 
)) 
関連する問題