Как сравнить время даты с временем, хранящимся в модели Django?

У меня есть следующая модель Django, которая включает в себя version_date, которая является DateTimeField:

class Flow(models.Model):
    name = models.CharField(max_length=30, choices=FLOW_NAMES)
    version = models.PositiveSmallIntegerField()
    version_date = models.DateTimeField()
    file = models.FileField(blank=True,null=True)
    last_accessed = models.DateTimeField(auto_now=True)

Я хочу сравнить временную метку, которую я извлек из XML-файла, с каждым значением version_date, хранящимся в модели. Как я могу выполнить итерации по модели, сравнивая извлеченную временную метку с каждой версией_даты в модели?

Создан xml-файл с datetime=2022-05-30 14:15:00. Вот как выглядит его содержимое:

<first one="1"><id>2022-05-30 14:15:00</id></first>

Файл находится в папке, где лежит manage.py. В представлении "test" считывается файл и используется подэлемент root[0].text. Значение которого преобразуется в datetime(qqq). Далее переменная qrt устанавливается в значения больше или равные "qqq" с помощью gte. И создается список отфильтрованных "version_date", которые отображаются на странице. Также в цикле выводятся все данные "version_date", вы можете закомментировать или удалить эти строки. В данном случае, в моей базе данных:

2022-06-15 12:00:00+00:00
2022-06-01 06:00:00+00:00
2022-05-05 12:06:27+00:00

urls.py

from django.urls import path
from .views import test

urlpatterns = [
    path('test/', test),
]

просмотров

from .models import Flow
from django.http import HttpResponse
import xml.etree.ElementTree as ET
import datetime

def test(request):
    tree = ET.parse('aaa.xml')
    root = tree.getroot()

    format = '%Y-%m-%d %H:%M:%S'
    qqq = datetime.datetime.strptime(root[0].text, format)

    for e in Flow.objects.all():#you can remove these two lines, they print all version_date
        print(e.version_date)#you can remove these two lines, they print all version_date

    qrt = Flow.objects.filter(version_date__gte=qqq)
    qrt_list = [qrt[i].version_date for i in range(len(qrt))]

    return HttpResponse(f"<p>version_date: {qrt_list}</p>")
Вернуться на верх