Я работаю над простым приложением, в котором элементы должны истекать автоматически через 5 минут.
В models.py у меня есть следующее:
from django.utils import timezone
def calc_default_expire():
return timezone.now() + timezone.timedelta(minutes=5)
class MyModel(models.Model):
uploaded_at = models.DateTimeField(auto_now_add=True)
expire_date = models.DateTimeField(default=calc_default_expire)
...
В моем views.py, У меня есть следующее:
from django.views.generic import DetailView
from .models import MyModel
from django.utils import timezone
class MyModelDetail(DetailView):
model = MyModel
queryset = MyModel.objects.filter(expire_date__gt=timezone.now())
У меня странное поведение.Даже через 5 минут, когда я вызываю URL элемента с истекшим сроком действия, он все равно возвращается (http code 200).
Однако, когда я перезагружаю встроенный сервер разработчика django и снова вызываю URL, я 'я получаю 404, что является желаемым результатом.
Я вижу две возможные причины:
- встроенный веб-сервер кеширует некоторые вещи (сомневаюсь, если честно, яне смог найти ничего в документах, где упоминается такое поведение)
- Я что-то не так делаю в своем фильтре наборов запросов (но я этого не вижу).
Кажется, что Expire_dateбыть правильно рассчитанным, когда я добавлю новые предметы.Кто-нибудь понял, что мне здесь не хватает?
USE_TZ = True
в моем settings.py Кстати.