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 и это сработает.

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