Мое веб-приложение не отправляет напоминания определенным пользователям, которые должны их получать.При попытке отладки следующий пример в оболочке Python меня сильно смутил.Есть ли что-то, что я пропускаю или делаю неправильно в фильтре?
Если нет ничего явно неправильного, как я могу отладить эту проблему?
>>> now = timezone.now()
>>> an_hour_ago = now - datetime.timedelta(hours=1)
>>> suz = User.objects.get(email="redacted")
>>> suz.reminded
False
>>> suz.wait_until <= now
True
>>> suz.wait_until >= an_hour_ago
True
>>> suz.is_active
True
>>> remindable = User.objects.filter(is_active=True,
... reminded=False,
... wait_until__gte=an_hour_ago,
... wait_until__lte=now)
>>> suz in remindable
False
Редактировать : добавление в мою модель пользователя.
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
is_active = models.BooleanField(default=True)
wait_until = models.DateTimeField(null=True, default=None)
# etc.
Редактировать 2 : Некоторый дополнительный контекст:
У меня есть представление, в котором пользователь выполняет задачу.После выполнения задачи для wait_until
устанавливается случайное время на основе диапазона, заданного в объекте конфигурации.Соответствующий код с этой точки зрения:
config = Configuration.objects.first()
min_minutes = config.min_minutes_between_tasks
max_minutes = config.max_minutes_between_tasks
when = now + datetime.timedelta(minutes=randint(min_minutes,
max_minutes+1))
user.wait_until = when
user.alerted = False
user.save()
Редактировать 3 : Я не уверен, что случилось, но я, вероятно, просто идиот.
Я перезапустил свойоболочка python и suz
теперь возвращаются корректно в remindable
, как и ожидалось.Я подозреваю, что изменил один из атрибутов выше и не запустил suz.save()
.Это, безусловно, объясняет это.ОРМ ... не забудьте save()
ваши объекты в памяти, дети!