1
我想了解Django的基於類的視圖(非常新),特別是,ListView。我正在努力理解「業務邏輯應該走向何方」。比方說,我有下面的類:在哪裏包括業務邏輯在列表視圖類方法
#views.py
class DisplayListView(ListView):
model = Cars
template_name = "searchres_list.html"
paginate_by = '5'
context_object_name = "titles"
def get_context_data(self, **kwargs):
context = super(SearchDisplayListView, self).get_context_data(**kwargs)
# custom logic whoch spits out "now". in this example [1 -->10]
context['now'] = [1,2,3,4,5,6,7,8,9,10]
return context
它工作正常,我能看的[1 - > 10]在我的模板。但是,當我查看ListView下的方法時,我發現我可能在get_queryset方法中包含了我的邏輯。所以,像這樣:
def get_queryset(self):
# Fetch the queryset from the parent get_queryset
queryset = super(SearchDisplayListView, self).get_queryset()
# custom logic whoch spits out "now". in this example [1 -->10]
queryset = [1,2,3,4,5,6,7,8,9,10]
return queryset
所以,我寧願(愚蠢的)問題是(或曾經我得到了這一切完全錯誤的!),應該在哪裏的商業邏輯非常去:
- 高清get_context_data
- def get_queryset
謝謝你的時間。
感謝這麼多的一些見解 - 但是我不明白你的第一個問題 - 你是什麼意思「,因爲在get_queryset方法,你只能修改你的ListView的queryset「你能解釋一下嗎?正如我所看到的,我可以將查詢集或上下文數據傳遞給模板 - 除了模板標籤之外,無論我在哪裏放置數據 - 查詢集或上下文,一切似乎都正常工作。這不是這種情況嗎? – AJW 2013-02-15 11:05:08
所以,當你從''get_queryset''方法改變''queryset''屬性時,你基本上會改變模板中的''object_list''。你不能在get_queryset中添加一個表單對象。你需要使用''get_context_data''來實現這一點。 – dragoon 2013-02-15 11:18:47
謝謝 - 我現在明白了!接受你的回答:) – AJW 2013-02-15 11:28:15