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