Итак, у меня есть запрос с несколькими объектами Q, которые объединены в единое целое (для достижения 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
Если я не могу сделать это, я, вероятно, сделаю три отдельных запроса, затем аннотирую результаты, затем ИЛИ наборы запросов вместе ... Я думаю, что это, вероятно, довольно расточительно и кажется неуклюжим.