0

当我translation.get_language()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())

谁能解释为什么?

4

1 回答 1

1

在第一个示例中,第一次加载类时评估语言。试试这个:

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


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

结果将是:

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

编辑

你可以这样做:

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
于 2012-07-23T11:49:19.370 回答