Django - аннотирование поля к модельному запросу, который добавляет значение поля даты к существующему полю модели в представлениях

Я хочу добавить поле к моей модели в представлениях без добавления его в базу данных с помощью функции annotate.

user_accounts_extension.objects.filter(types='trial').annotate(expire_date=duration + datetime.timedelta(days=180))

Модель user_accounts_extension является расширением включенных моделей auth.

"Duration" - это поле даты, которое представляет собой дату закрытия счета.

Я хочу, чтобы мой вид отображал это поле + 180 дней в мой шаблон - но приведенный выше код не работает. Я также пробовал:

 user_accounts_extension.objects.filter(types='trial').annotate(expire_date='duration' + datetime.timedelta(days=180))

Безрезультатно. Возможно ли это сделать, или мне нужно добавить новое поле в мою модель?

Вы можете просто перезаписать существующее время даты одной строкой. Допустим, у вас есть

import datetime 

created_date = using ORM without additional 180 days
created_date = created_date + datetime.timedelta(days=180)

done

Решение:

Я добавил фиктивную переменную boolean в модель и изменил ее экземпляр из запроса в представлении:

def overview(request):
    accounts = user_accounts_extension.objects.filter(types='trial')
    for account in accounts: 
        if account.expire_date + datetime.timedelta(days=180) <= datetime.date.today():
            account.deletion_trigger = True
return render(requests, 'overview.html'{'accounts': accounts})

Это только изменяет экземпляр, который отображается в шаблоне, и ничего не сохраняется в базе данных.

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