@AlexMine
Учусь

Как заставить Django не кэшировать queryset в ListView?

Здравствуйте, имеется представление, страницы распродаж.
class SaleView(generic.ListView):
    template_name = 'artskill/sale.html'
    context_object_name = "products"
    queryset = [SaleImages.objects.filter(state=True), Product.objects.filter(show_sale_price=True)]


Когда вношу изменение в бд, то на самой странице распродаж информация остается старой, изменяется только при перезагрузки сервера. Как заставить django не откладывать в кэш этот queryset?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
При чём тут кэширование? Класс вместе со своими полями объявляется один раз - при считывании кода интерпретатором. Соответственно, в нём до конца работы интерпретатора определено значение поля класса. Хотите чтобы при каждом обращении значение было новым, используйте метод и возвращайте не список, а именно QuerySet:
class SaleView(generic.ListView):
    template_name = 'artskill/sale.html'
    context_object_name = "products"

    def get_queryset(self):
        return Product.objects.filter(show_sale_price=True)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы