Сравнение и разница между datetime.now () и datetimefield от db - PullRequest
0 голосов
/ 10 декабря 2018

Я не могу найти ответ на этот вопрос, который мне подходит.Я пытаюсь проверить разницу между datetime для созданного поста с datetime.now ()

пример того, что я хотел бы сделать в view.py

  if (datetime.now() - post.created_at).minutes > 10:
        Do_this
    else:
        Do_that

Я пытался с timedeltaвещи.Также пробовал strptime с форматами datetime.Не повезло

Когда я печатаю datetime.now () я получаю: 2018-12-10 20: 22: 10.535052 И с post.created_at: 2018-12-10 20: 18: 52: 544396+00: 00

Как мне сделать их сопоставимыми?

1 Ответ

0 голосов
/ 11 декабря 2018

Django предоставляет вам объект datetime с поддержкой часовых поясов.datetime.now() - это , дающий вам объект наивного часового пояса datetime.Вы не можете сравнивать их.

Вместо этого используйте django.utils.timezone.now(), который предоставляет тип datetime объекта, который соответствует вашим настройкам Django (в вашем случае, с учетом часового пояса datetime).

Также обратите внимание, что timedelta объекты, , как описано , не имеют атрибута minutes.Они имеют атрибут seconds.

В итоге:

if timezone.now() - post.created_at > timedelta(minutes=10):
    Do_this
else:
    Do_that
...