2012-07-23 2 views
0

translation.get_language()을 클래스 기반보기의 queryset 속성에 사용하면 언어를 변경할 때 잘못된 값을 반환합니다.'queryset'속성을 사용할 때 장고 클래스 기반보기, 언어 값이 잘못되었습니다.

class LandingPageOverview(ListView): 
    model = LandingPage 
    context_object_name = 'landingpages' 
    template_name = 'landingpage/overview.html' 
    queryset = LandingPage.objects.filter(language=translation.get_language()) 

get_queryset을 사용하면 올바른 값이 반환됩니다.

class LandingPageOverview(ListView): 
    model = LandingPage 
    context_object_name = 'landingpages' 
    template_name = 'landingpage/overview.html' 

def get_queryset(self): 
    return LandingPage.objects.filter(language=translation.get_language()) 

아무도 이유를 설명 할 수 있습니까?

답변

1

첫 번째 예에서는 클래스가 처음로드 될 때 언어가 평가됩니다.

[1] 
[1, 1] 
[1, 1, 1] 
[1, 1, 1, 1] 

편집 :

당신이 이런 식으로 뭔가를 할 수 :

def a(x=[]): 
    x.append(1) 
    print x 


a() 
a() 
a() 
a() 

결과가 될 것입니다 :

class LandingPageOverview(ListView): 
    model = LandingPage 
    context_object_name = 'landingpages' 
    template_name = 'landingpage/overview.html' 

    @property 
    def queryset(self): 
     return LandingPage.objects.filter(language=translation.get_language()) 

그리고 당신처럼 사용이 예를 들어보십시오 원하는 :

l = LandingPageOverview() 
l.queryset 
관련 문제