0
所以我有一個查詢與幾個OR對一起(實現一個UNION)的Q對象,我想註釋每個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
如果我不能做到這一點,我會可能會做三個單獨的查詢,然後註釋結果,然後將這些查詢集合在一起......我認爲這可能很浪費,而且看起來很笨拙。
您無法將查詢集合在一起。一旦它們被執行,它們只是結果集上的迭代器。如果你需要OR條件,這就是Q對象的用途。 – rewritten
@saverio實際上,你可以:https://github.com/django/django/blob/master/tests/modeltests/or_lookups/tests.py#L27,但是你說得通常應該使用Q對象。 –