在我的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
?
答案 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())