Кэширование страницы Django (проблемы с БД)? - PullRequest
1 голос
/ 24 февраля 2011

У меня странная проблема в Django 1.2.4.

У меня есть страница, которая позволяет пользователю объявлять настройки интерфейса. Эти настройки представлены в следующих моделях:

class Setting(models.Model):
    """
    Maintains a key-value pair for some front-end editable setting.
    """

    class Meta:
        abstract = True

    name = models.CharField(max_length=120, primary_key=True)
    description = models.CharField(max_length=300, blank=True)

class IntegerSetting(Setting):
    value = models.IntegerField()

class ListSetting(Setting):
    value = PickledObjectField(default=lambda: list(), editable=True)

Эти настройки отражаются в форме смены администратора. Я переопределил шаблон и сделаю настройку доступной для страницы следующим образом:

{% extends 'admin/change_form.html' %}

{% block extrahead %}
<script type="application/javascript">
    var global= {};
    global.min_slider = {{min_slider}};
    global.max_slider = {{max_slider}};
</script>
{{ block.super }}
{% endblock %}

Эти значения предоставляются из класса администратора:

class FooAdmin(admin.ModelAdmin):
    form = FooAdminForm

    min_max = {'min_slider': get_setting("Min Slider Value"), 'max_slider': get_setting("Max Slider Value")}

    def change_view(self, request, object_id, extra_context=None):
        extra_context = extra_context or {}
        extra_context.update(self.min_max)
        return super(FooAdmin, self).change_view(request, object_id, extra_context)

После того, как я изменил настройку в форме настроек, я не вижу ее обновленной ни на одной странице загрузки формы смены администратора. Тем не менее, после перезапуска сервера dev, я вижу данные просто отлично.

Что здесь происходит? Я сталкиваюсь с проблемой кеширования? Если это кеширование в интерфейсе администратора, как я могу отключить его только для этой одной страницы?

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Проблема в том, что вы определяете их на уровне класса в админке.Поэтому они оцениваются при выполнении определения класса, то есть при запуске процесса.

Переместите определение словаря в сам метод change_view.

0 голосов
/ 24 февраля 2011

Сохраняете ли вы настройки в сеансе? Обновили ли вы сеанс после изменения настройки?

(Это была моя проблема всего несколько дней назад.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...