2016-02-25 67 views
0

我想在列表視圖中使用存儲在會話中的變量(在先前視圖中通過表單設置)中篩選查詢集。在列表視圖中使用會話

這樣做的正確方法是什麼?

class SomeListView(ListView): 
    model = MyModel 
    test_filter = self.request.session['test_filter'] 
    queryset = TariffPrices.objects.filter(test_filter) 

回答

3

您可以通過在get_queryset方法

class SomeListView(ListView): 
    model = MyModel 

    def get_queryset(self): 
     test_filter = self.request.session.get('test_filter') 
     if test_filter: 
      return TariffPrices.objects.filter(test_filter) 
     return TariffPrices.objects.all() 

你必須在一分鐘的問題設置它做,這是你想上一個類級別的使用實例字段

+0

感謝那些說得通。出於興趣,當你沒有默認值時,爲什麼你會使用.get與會話的關鍵字?啊關鍵錯誤 – Yunti

+0

@Yunti - '{} ['test']'會導致一個錯誤,因爲'{} .get('test')'doesnt :)(其中該鍵不存在),如果沒有默認值提供然後'None'是默認 – Sayse

+1

謝謝偉大的答案 - 注意我也應該調用get_queryset super()? – Yunti

相關問題