Вычитание года из объекта в проекте Django

Я пытаюсь вычесть данные о годе из объекта модели, созданного в проекте Django. Я хочу получить конечное значение, сравнивая дату в объекте, зарегистрированном в моей модели, со значением текущего года, 2022. Что-то вроде вычисления юбилейной даты для проекта эфемерид.

Logic: Текущий год - объект со значением 'year' в поле даты "1952";

Логический пример: 2022 - some_variable

Ожидаемый результат = 70

Моя модель:

class Person(models.Model):
    dateborn= models.DateField()

Я пытаюсь использовать .dates() в логике в моем views.py, чтобы получить год:

from app.models import Person

persons = Person.objects.all()
dateborn = persons.dates('dateborn','year')

тогда я получаю результат:

<QuerySet [datetime.date(1935, 1, 1)]>

OK!

Сейчас я пытаюсь разработать логику для вычитания результата этого QuerySet, используя только 'YEAR' объекта. Я знаю, что если я использую INT, я не смогу выполнить вычисление.

Я пытаюсь:

#used
resultfinal = 2022 - dateborn

AND

#used
resultfinal = datetime.today().strftime('%d/%m') - dateborn


Then

#My expected end result would be something like this:
resultfinal = 2022 - 1935

Я знаю, что все перепутал, но я не могу найти правильный метод вычитания :(

).

Я рассчитываю использовать конечный результат вычисления вычитания для печати в моем HTML-шаблоне с помощью jinja2 после указания переменной 'resultfinal' в моем контекстном словаре. В моем HTML-файле я предполагаю использовать условие for для получения значений в списке:

{% for x in resultfinal %}
    <p> Anniversary: {{x}} years </p> <!--Expected difference from the year registered in the database (-) the current year 2022-->
    {% endfor %}

Может ли кто-нибудь помочь мне, пожалуйста? Большое спасибо!

Прежде всего, dateborn является QuerySet, как вы показали, поэтому используйте dateborn[0] для получения объекта даты. Если вам нужен год, сделайте dateborn[0].year, что даст вам целое число года (1935), из которого вы можете вычесть.

resultfinal = datetime.date.today().year - dateborn[0].year

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