Создание переменной Q в django orm

Я хочу привести этот запрос в действие как одну переменную Q

In [55]: Practitioner.objects.filter(query).filter(query10).distinct()                                                        
Out[55]: <QuerySet [<Practitioner: Mohsenibod, Hadi>]>

Я использовал эти методы, но они не работают:

In [53]: Practitioner.objects.filter(query & query10).distinct()                                                              
Out[53]: <QuerySet []>                                                                    
                                                                                                                              
In [54]: Practitioner.objects.filter(query , query10).distinct()                                                              
Out[54]: <QuerySet []>

Можно использовать Q objects и объединить с помощью оператора логического ИЛИ |, так:

from django.db.models import Q

combined_query = Q(query) | Q(query10)
result = Practitioner.objects.filter(combined_query).distinct()

Этот запрос строится путем объединения условий, указанных в query и query10, с помощью оператора логического ИЛИ |. Затем он фильтрует набор запросов Practitioner на основе этого комбинированного запроса и гарантирует, что результаты будут разными.

Мои объекты были такими:

query = Q(specialties__isnull=False,practices__city__isnull=False,practices__location__latitude__isnull=False,practices__city__id__in=permitted_cities,specialties__in=permitted_specialties)
query10 = Q(practices__city__slug = city)

Я не знаю, в чем проблема с django, но я решил эту ошибку, используя kwargs вместо объектов Q, а затем написав этот запрос:

combined_query = {'specialties__isnull' : False,
'practices__city__isnull' : False,
'practices__location__latitude__isnull' : False,
'practices__city__id__in': permitted_cities,
'specialties__in': permitted_specialties,
'practices__city__slug' : city}
Out[54]: Practitioner.objects.filter(**combined_query).distinct()  
Out[55]: <QuerySet [<Practitioner: Mohsenibod, Hadi>]>
Вернуться на верх