Django - Использование Case для обновления поля даты, но без эффекта?
Я пытаюсь обновить два поля:
# This works, changes the correct field.
DModel.objects.filter(ticker=i['tic']).filter(trail=True).update(
last_high_price=Case(
When(
LessThan(F('last_high_price'),
i['high_price']),
then=Value(i['last_high_price'])),
default=F('last_high_price')
)
)
# Using the same condition to change another field in same row. Does not work?
DModel.objects.filter(ticker=i['tic']).filter(trail=True).update(
date_high_price=Case(
When(
LessThan(F('last_high_price'),
i['high_price']),
then=Value(i['last_date_time'])),
output_field=DateField(), default=F('date_high_price')
)
)
Поле date_high_price
не обновляется, я получаю ответ 200
. Но поле остается null
.
Если я удалю output_field
, то получу >FieldError.
Редактирование:
Оставляю вопрос как есть на случай, если кто-то еще столкнется с этой проблемой.
По сути, я сначала выполняю обновление условия, а затем снова проверяю то же условие во втором операторе, что приведет к значению по умолчанию. Переместите date_high_price
перед last_high_price
и это сработает.