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})
Это только изменяет экземпляр, который отображается в шаблоне, и ничего не сохраняется в базе данных.