Создание вычисляемого столбца с помощью выражения 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(),
))