2011-02-24 11 views
1

Django 1.2.4에서 약간 이상한 문제가 있습니다.장고 페이지 캐싱 (db 문제)?

사용자가 프런트 엔드 설정을 선언 할 수있는 페이지가 있습니다. 이러한 설정은 다음 모델에서 표현됩니다 :

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에 서버를 다시 시작한 후, 나는 데이터를 잘 볼 수 있습니다.

여기에 무슨 일이 일어나고 있습니까? 캐싱 문제가 있습니까? 관리 인터페이스에서 캐싱하는 경우 어떻게 한 페이지 만 비활성화 할 수 있습니까?

+0

어떻게 변경 양식 서식 파일로 설정을 보냅니 까? –

+0

@Daniel Roseman OP가 업데이트되었습니다. –

답변

0

세션에 설정을 저장합니까? 설정을 변경 한 후 세션을 업데이트 했습니까?

(즉, 단지 몇 일 전에 내 문제였다.)

+0

나는 세션으로 아무것도하지 않을거야. –

1

문제는 당신이 관리자의 클래스 수준에서 다음을 정의하는 것입니다. 따라서 클래스 정의가 실행될 때, 즉 프로세스 시작시 평가됩니다.

사전 정의를 change_view 메소드 자체로 이동하십시오.