私は、(UNIONを達成するために)一緒にOR-EDされた数個のQオブジェクトを持つクエリを持っています。試合。これは、検索結果を表示するときに表示されるので、各検索結果でどの検索語句がヒットしたかを強調表示できます。どのQオブジェクトが見つかったのかに基づいてDjango querySetに注釈を付ける必要があります
ここでは結果のクエリセットを生成したコードです:
Gene.objects.filter(Q(EC__EC='3.2.1.4')|Q(Protein_Family__name__in=famList)|Q(Pfam__Pfam__in=pfams),Protein_length__gte=100, Distance_From_Contig_Upstream__gte=10, Distance_From_Contig_Downstream__gte=10).distinct()
私は.extraオプションを使用して、この注釈付きの列を追加することができると思います。 https://docs.djangoproject.com/en/1.3/ref/models/querysets/#extra
私はこれを行うことができない場合は、私がしますおそらく3つの別々のクエリを実行し、結果に注釈をつけたり、クエリセットを一緒にしたりすると、おそらくかなり無駄であり、不器用に思えるでしょう。
クエリセットをまとめてORすることはできません。それらが実行されると、結果セットに対する反復子に過ぎません。 OR条件が必要な場合は、それがQオブジェクトの目的です。 – rewritten
@saverio実際には、次のことができます:https://github.com/django/django/blob/master/tests/modeltests/or_lookups/tests.py#L27しかし、Qオブジェクトが一般的に使用されるはずです。 –