Могу ли я использовать подзапросы 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)

Кто-нибудь знает лучший способ сделать это? Заранее спасибо!

Вернуться на верх