Могу ли я использовать подзапросы OR Exists в Django?
Я хочу иметь возможность or
выполнять два Exists
подзапроса. Это лучшее решение, которое я смог придумать:
def my_filter(self, queryset, name, value):
model_a_qs = ModelA.objects.filter(id=OuterRef('a_id'))
model_b_qs = ModelB.objects.filter(id=OuterRef('b_id'))
return queryset.annotate(
has_a=Exists(model_a_qs),
has_b=Exists(model_b_qs),
has_a_or_b=Case(
When(has_a=True, then=Value(True)),
When(has_b=True, then=Value(True)),
default=False,
output_field=BooleanField(),
),
).filter(has_a_or_b=value)
Кто-нибудь знает лучший способ сделать это? Заранее спасибо!