Создание вычисляемого столбца с помощью выражения if django

Я хочу создать новый вычисляемый столбец в моем наборе запросов django (Models.objects), который будет вычисляться следующим образом:

field_one if field_one is not null else field two
<
from models.models import Model
from django.db.models import F

data = Model.objects.annotate(start_date= F('better_date') if F('better_date') is not None else F('field_2'))
data[0].__dict__['start_date']
# Result
#'start_date': None
< <

Вы можете использовать When и Case условные выражения в ваших аннотациях, чтобы сделать утверждения if

    from django.db.models import F, Case, When, Q, DateField
    data = your_model_name.objects.annotate(start_date=Case(
        When(
            condition=Q(better_date__isnull=False),
            then=F('better_date')
        ),
        default=F('field_2'),
        output_field=DateField(),
    ))
Вернуться на верх