1

所以我有一个查询,其中有几个 Q 对象被 OR-ed 在一起(以实现 UNION),我想注释每个与 Q 对象匹配的结果。因此,当我去显示我的查询结果时,我可以突出显示每个结果中点击了哪些搜索词。

这是产生结果查询集的代码:

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

如果我不能这样做,我可能会做三个单独的查询,然后注释结果,然后将查询集 OR 在一起......我认为这可能非常浪费,而且看起来很笨拙。

4

1 回答 1

0

如果你用 注释extra,finaldistinct将不起作用。如果您有一条记录(在 JOINed 表中)匹配条件 onEC和另一条匹配条件 on Protein.Family.name,那么它要么为您提供一条匹配记录(因此它只会添加相应的标志),要么它为您提供所有匹配记录(复制结果集中的结果)。

于 2011-08-11T06:20:55.800 回答