'产品列表'对象没有属性' object_list'

时间:2016-06-07 09:38:57

标签: 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()

造成此错误的原因是什么?

如何在第二种方法中获得object_list

2 个答案:

答案 0 :(得分:12)

您可能会在超级get_context_data()中关注line时遇到错误:

queryset = kwargs.pop('object_list', self.object_list)

BaseListView object_list方法通过调用get_queryset方法在视图上设置self.object_list = self.get_queryset()

get_context_data()

但是,在您的情况下,您在get_queryset方法本身中调用了object_list,当时angular .module('app') .service('fileUpload', ['$http', function ($http) { this.uploadFileToUrl = function(file, uploadUrl){ var fd = new FormData(); fd.append('file', file); $http.post(uploadUrl, fd, { transformRequest: angular.identity, headers: {'Content-Type': undefined} }) .success(function(){ }) .error(function(){ }); }}]); 未在视图中设置。

答案 1 :(得分:3)

抱歉这样一个模糊的问题。这是我第一次尝试使用Django。我阅读了一些文档,并意识到我实际上可以通过filter()获得我需要的对象列表:

data = self.model.objects.filter(categories__in=self.get_category_menu())