Задать вопрос
@luchs
Новичок в деле программирования

Почему класс контроллер в django наследованный от ListView не обновляет данные после изменения базы данных?

Вот код этого контроллера в views.py
# python 3.5, django 1.9
from django.utils import timezone
from creation.models import Game
from django.views.generic.list import ListView

class GameList(ListView):
    template_name = "gamelist.html"
    queryset = Game.objects.order_by("-end")
    paginate_by = 20
    def get_context_data(self, **kwargs):
        context = super(GameList, self).get_context_data(**kwargs)
        context["User"] = self.request.user
        context["next"] = []
        context["now"] = []
        context["time"] = timezone.now()
        for i in self.queryset:
            if i.start > timezone.now():
                context["next"].append(i)
            elif i.end > timezone.now():
                context["now"].append(i)
            else: break
        context["next"].reverse()
        return context

Собственно он делит все игры на следующие, текущие, которые на странице выводятся соответственно из массивов, а прошедшие игры из object_list сравнив game.end < time т.к. в нём все игры. Игр будущих и текущих будет всегда мало, поэтому в пагинации больше нуждаются прошедшие игры.
{% if next %}
     <p class="next"></i> Ближайшие игры:</p>
     {% for game in next %}
         <a href="{% url "infogame" code=game.code %}"> {{ game.name }} (начало: {{ game.start }})</a><br />
     {% endfor %}
{% endif %}
{% if now %}
    <p class="now">Текущие игры:</p>
    {% for game in now %}
        <a href="{% url "infogame" code=game.code %}">> {{ game.name }} (до: {{ game.start }})</a><br />
    {% endfor %}
{% endif %}
<p class="games">Все прошедшие игры:</p>
{% for game in object_list %}
     {% if game.end < time %}  <!-- игра завершена -->
            <a href="{% url "infocart" code=game.code %}">> {{ game.name }} ({{ game.start }} - {{ game.end }})</a><br />
      {% endif %}
{% endfor %}

Всё выводится правильно, но если изменить время начала и конца у игры, так чтобы она перебралась в другую категорию, он не выводится совсем. Перезапустив сервер всё становится так, как должно быть.
  • Вопрос задан
  • 500 просмотров
Подписаться 3 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@ArkadyBagdasarov
Все дело в том, что шаблон генерируется один раз - во время загрузки страницы. Чтобы содержимое менялось динамически - подгружай данные через ajax
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы