現(xiàn)在讓我們來仔細(xì)看看這個 queryset 。 大多數(shù)通用視圖有一個queryset參數(shù),這個參數(shù)告訴視圖要顯示對象的集合。
舉一個簡單的例子,我們打算對書籍列表按出版日期排序,最近的排在最前:
1
2
3
4
5
6
7
8
|
book_info = { 'queryset' : Book.objects.order_by( '-publication_date' ), } urlpatterns = patterns('', (r '^publishers/$' , list_detail.object_list, publisher_info), * * (r '^books/$' , list_detail.object_list, book_info), * * ) |
這是一個相當(dāng)簡單的例子,但是很說明問題。 當(dāng)然,你通常還想做比重新排序更多的事。 如果你想要呈現(xiàn)某個特定出版商出版的所有書籍列表,你可以使用同樣的技術(shù):
1
2
3
4
5
6
7
8
9
|
* * apress_books = { * * * * 'queryset' : Book.objects. filter (publisher__name = 'Apress Publishing' ), * * * * 'template_name' : 'books/apress_list.html' * * * * } * * urlpatterns = patterns('', (r '^publishers/$' , list_detail.object_list, publisher_info), * * (r '^books/apress/$' , list_detail.object_list, apress_books), * * ) |
注意 在使用一個過濾的 queryset 的同時,我們還使用了一個自定義的模板名稱。 如果我們不這么做,通用視圖就會用以前的模板,這可能不是我們想要的結(jié)果。
同樣要注意的是這并不是一個處理出版商相關(guān)書籍的最好方法。 如果我們想要添加另一個 出版商頁面,我們就得在URL配置中寫URL配置,如果有很多的出版商,這個方法就不能 接受了。