2016-06-07 27 views
1

在我ProductList班組長,當我嘗試調用get_context_data的另一種方法,我得到一個錯誤'ProductList' object has no attribute 'object_list'「產品列表」對象有沒有屬性「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

這是什麼代碼實際上意欲何爲? – Sayse

+1

該代碼不會給出該錯誤,因爲您永遠不會將object_list作爲屬性引用,只能將其作爲關鍵字;你應該看到KeyError。請顯示真實的代碼和完整的回溯。 –

+1

@DanielRoseman:它會在超類的實現中。請檢查我的答案。 – AKS

回答

2

對不起,這樣一個模糊的問題。這只是我第一次嘗試Django。我看了一些資料,並意識到,我可以真正得到對象的列表,我需要與filter()

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

你可能在超類的get_context_data()越來越對以下line錯誤:

self.object_list = self.get_queryset() 

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

BaseListViewget方法通過調用get_queryset方法設置視圖上的object_list

但是,在你的情況下,你在get_queryset方法本身中調用get_context_data()方法,並且當時object_list沒有設置在第e視圖。