我有一個從ListView
派生的通用基於類的視圖。該視圖應與forms.py
中聲明的表單交互,以通過GET查詢過濾objects_list,並修改上下文(如果您對我爲什麼想要這樣做感興趣,請檢查我的previous question)。Django的GET窗體在ListView和上下文修改中
這意味着我需要get_queryset
和get_context_data
方法中的一個表格實例(form = MyForm(request.GET)
)。
This solution是不能接受的,因爲這是違反this編碼原則,假設get_queryset
總是最先被調用(這可能不是在Django的未來版本的情況下)。
實施例:
def get_queryset(self):
self.form = MyForm(self.request.GET)
This solution是不能接受的,因爲它使用的原始參數GET而我們想利用的形式自動解析/驗證的全部潛力。
例子:
def get_queryset(self):
a_form_field = self.kwargs["a_form_field"]
這可能不違反任何良好的設計原則呢?
你是什麼意思「假定get_queryset總是會被首先調用?」首先在什麼之前? – Nick
在get_context_data之前。 – Saturnix
是什麼讓你覺得他們可以做到這一點?我的意思是我們絕對不想硬編碼一些Django的東西,或者依賴一些沒有記錄的特性,但是如果不依賴於一些共同的想法,我們就不能使用任何框架。就像我們不能確定他們不會將get_context_data重命名爲get_context,但這並不意味着我們不應該使用它。 – Nick