Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于Django类的视图,在使用';queryset';属性_Python_Django - Fatal编程技术网

Python 基于Django类的视图,在使用';queryset';属性

Python 基于Django类的视图,在使用';queryset';属性,python,django,Python,Django,当我在基于类的视图的queryset属性中使用translation.get_language()时,更改语言时会返回不正确的值 class LandingPageOverview(ListView): model = LandingPage context_object_name = 'landingpages' template_name = 'landingpage/overview.html' queryset = LandingPage.objects.

当我在基于类的视图的
queryset
属性中使用
translation.get_language()
时,更改语言时会返回不正确的值

class LandingPageOverview(ListView):
    model = LandingPage
    context_object_name = 'landingpages'
    template_name = 'landingpage/overview.html'
    queryset = LandingPage.objects.filter(language=translation.get_language())
当我使用
get\u 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())

有人能解释一下原因吗?

在第一个示例中,在第一次加载类时对语言进行评估。请尝试以下示例:

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