Обнаружение, если заданное время прошло с даты в модели Django

Этот код просто дает мне ошибки. У меня есть поле (datetime) в моей модели Django, называемое invite_sent , а другое поле в той же модели, называемой check_time Время проверки - это количество времени после отправки приглашения , что должно произойти определенное действие. По какой-то причине мой код не работает.

models.py

class Game(models.Model):
    title = models.CharField(max_length=50)
    summery = models.CharField(max_length=500)
    pin = models.CharField(max_length=12)
    key = models.CharField(max_length=12)
    complete = models.BooleanField()
    invite_sent = models.DateTimeField() #<-----------
    check_time = models.IntegerField() #<-----------
    on = models.ForeignKey("Member", related_name="turn", blank=True,  null=True)

views.py

def check_time():
    games = Game.objects.filter(complete = False)
    for g in games:
        hours = (datetime.datetime - g.invite_sent)/60/60 # trying to get hours between now and then
        if not hours > g.check_time: #stuff beyond this is not really important to the issue
            continue
        send_overtime(g)
        set_on(g)
        send_invite(g)
1
nl ja de

2 ответы

You have problems at this line hours = (datetime.datetime - g.invite_sent)/60/60

  • вы должны использовать datetime.datetime.now() вместо datetime.datetime (его объект модуля, который вы должны вызвать .now() )
  • вычитание двух объектов datetime дает объекты timedelta , у которых есть метод .total_seconds() , который используется для преобразования в часы

поэтому строка с ошибкой должна быть:

hours = (datetime.datetime.now() - g.invite_sent.replace(tzinfo=None)).total_seconds()/60/60
4
добавлено
Спасибо, но теперь я получаю эту ошибку не может вычитать время с наименьшими смещениями и смещениями
добавлено автор sinθ, источник
Часовой пояс не важен. Фактически, это действительно вредно для того, как программа должна работать. (Таким образом, это не должно быть известно в часовом поясе)
добавлено автор sinθ, источник
Теперь я получаю отрицательное число ...
добавлено автор sinθ, источник
ok django, возвращающий offset-aware datetime , который известен в часовом поясе, информация о часовом поясе важна в вашем случае? ответьте, чтобы я мог соответствующим образом обновить решение
добавлено автор Aamir Adnan, источник
Я обновил свой ответ. Если вы не хотите получать данные о времени от django, вы должны установить USE_TZ = False в свой файл настроек
добавлено автор Aamir Adnan, источник
очистить данные в таблицах и начать снова. Поскольку старые данные относятся к часовому поясу, выполняя .replace (tzinfo = None) , отключает информацию о часовом поясе, не забудьте изменить USE_TZ = False в файле настроек.
добавлено автор Aamir Adnan, источник
@Hvandracas я знаю, но если вы читаете комментарии, OP сказал Часовой пояс не имеет значения. Фактически, это действительно вредно для того, как программа должна работать
добавлено автор Aamir Adnan, источник
Вы также можете использовать часовые пояса. Вместо использования datetime.datetime.now() используйте django.utils.timezone.now() .
добавлено автор aemdy, источник

You have problems at this line hours = (datetime.datetime - g.invite_sent)/60/60

  • вы должны использовать datetime.datetime.now() вместо datetime.datetime (его объект модуля, который вы должны вызвать .now() )
  • вычитание двух объектов datetime дает объекты timedelta , у которых есть метод .total_seconds() , который используется для преобразования в часы

поэтому строка с ошибкой должна быть:

hours = (datetime.datetime.now() - g.invite_sent.replace(tzinfo=None)).total_seconds()/60/60
4
добавлено
Спасибо, но теперь я получаю эту ошибку не может вычитать время с наименьшими смещениями и смещениями
добавлено автор sinθ, источник
Часовой пояс не важен. Фактически, это действительно вредно для того, как программа должна работать. (Таким образом, это не должно быть известно в часовом поясе)
добавлено автор sinθ, источник
Теперь я получаю отрицательное число ...
добавлено автор sinθ, источник
ok django, возвращающий offset-aware datetime , который известен в часовом поясе, информация о часовом поясе важна в вашем случае? ответьте, чтобы я мог соответствующим образом обновить решение
добавлено автор Aamir Adnan, источник
Я обновил свой ответ. Если вы не хотите получать данные о времени от django, вы должны установить USE_TZ = False в свой файл настроек
добавлено автор Aamir Adnan, источник
очистить данные в таблицах и начать снова. Поскольку старые данные относятся к часовому поясу, выполняя .replace (tzinfo = None) , отключает информацию о часовом поясе, не забудьте изменить USE_TZ = False в файле настроек.
добавлено автор Aamir Adnan, источник
@Hvandracas я знаю, но если вы читаете комментарии, OP сказал Часовой пояс не имеет значения. Фактически, это действительно вредно для того, как программа должна работать
добавлено автор Aamir Adnan, источник
Вы также можете использовать часовые пояса. Вместо использования datetime.datetime.now() используйте django.utils.timezone.now() .
добавлено автор aemdy, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил