Как сравнить время даты с временем, хранящимся в модели 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>")