ORM内での条件分岐

sales_exists = Sales.objects.filter(name=OuterRef('pk'))

person_model = Person.objects.annotate(
    has_sales=Case(
        When(Exists(sales_exists), then=Value('売り上げあり')),
        default=Value('売り上げなし'),
    )
)

print(person_model.values('name', 'has_sales'))
Case(
When(条件, then=条件に一致したときの値),
default=条件に一致しなかったときの値,
)

の形式で記入することでORM内で条件分岐を行うことができます。

When(条件, then=条件に一致したときの値)は,区切りで追加することもできます。

上の例では、自身に紐づいたSalesが1つでもあれば売り上げあり、なければ売り上げなしがhas_salesフィールドに代入されています。