1

そのため、(UNION を実現するために) 一緒に OR 演算されたいくつかの Q オブジェクトを含むクエリがあり、Q オブジェクトが一致した各結果に注釈を付けたいと考えています。これにより、クエリ結果を表示するときに、各結果でヒットした検索用語を強調表示できます。

結果の 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 を組み合わせます...これはおそらくかなり無駄であり、不器用に思えます。

4

1 に答える 1

0

で注釈を付けるとextra、ファイナルdistinctは機能しません。の条件に一致する 1 つのレコード (JOINed テーブル内)ECと の条件に一致する別のProtein.Family.nameレコードがある場合、一致するレコードの 1 つ (したがって、対応するフラグのみが追加されます) またはすべての一致するレコード (結果セット内の結果を複製します)。

于 2011-08-11T06:20:55.800 に答える