'ProductList'对象没有属性'object_list'

Vik*_*tor 5 django python-2.7

在我的ProductList课堂上,当我尝试get_context_data用另一种方法调用时,我收到一个错误'ProductList' object has no attribute 'object_list'

def get_context_data(self, **kwargs):
        c = super(ProductList, self).get_context_data(**kwargs)
        c['category'] = self.category
        c['category_menu'] = self.get_category_menu()
        c['filters'] = self.filters
        c['expanded_filters'] = self.get_expanded_filters()
        c['active_filters'] = self.get_active_filters()
        c['category_list'] = self.category.get_children().filter(in_lists=True)
        c['colors_list'] = self.get_colors_list(c['object_list'])
        return c

def get_queryset(self):

    data = self.get_context_data()
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个错误?

我怎样才能进入object_list第二种方法?

AKS*_*AKS 13

您可能会在超类的后续中收到错误get_context_data():

queryset = kwargs.pop('object_list', self.object_list)
Run Code Online (Sandbox Code Playgroud)

所述get的方法BaseListViewobject_list的视图通过调用get_queryset方法:

self.object_list = self.get_queryset()
Run Code Online (Sandbox Code Playgroud)

但是,你的情况,你调用get_context_data()get_queryset方法本身和当时object_list未在视图中设置.


Vik*_*tor 4

抱歉问这么模糊的问题。这只是我第一次尝试 Django。我阅读了一些文档并意识到我实际上可以通过以下方式获取我需要的对象列表filter()

data = self.model.objects.filter(categories__in=self.get_category_menu())
Run Code Online (Sandbox Code Playgroud)