3
我試圖訪問經過身份驗證的用戶在一個窗體類中。我玩從傳遞請求對象從視圖到類的init,但它似乎馬虎。有沒有更好的方法來訪問視圖之外的經過身份驗證的用戶或請求對象?在視圖之外訪問經過身份驗證的用戶
class LicenseForm(forms.Form):
'''def __init__(self, *args, **kwargs):
#self.fields['license'] = forms.ModelChoiceField(queryset=self.license_queryset(), empty_label='None', widget=forms.RadioSelect())'''
def license_queryset():
queryset = License.objects.filter(organization__isnull=True)
# add addtional filters if the logged in user belongs to an organization
return queryset
licenses = forms.ModelChoiceField(queryset=license_queryset(), empty_label='None', widget=forms.RadioSelect())
我編輯了我的原始帖子,以顯示我正在使用的代碼。因此,在license_queryset方法中,我想根據經過身份驗證的用戶關聯添加一些其他過濾器。註釋掉的__init__是我要從視圖中接受請求對象的地方。 – CrashRoX 2010-02-05 01:57:34
你的權利,這似乎更清潔。我感謝所有的幫助。 我之前玩過相同的代碼方法,但一直在遇到能夠在license_queryset中訪問自己的問題。我必須在init中動態創建許可證表單字段以解決此問題。有沒有辦法讓license_queryset擁有自己的範圍,仍然可以從許可證表單聲明中調用它?對不起,如果這些都是新問題。剛開始使用django和python :) – CrashRoX 2010-02-05 02:11:16
@CrashRoX:你說得對,我忘了重要的一點。改變了它。當你定義類方法時,你總是必須至少提供一個參數(爲了方便起見,稱爲「self」)。稍後當您調用該函數時,您不必傳遞它,它會自動完成。這可能會幫助你進入它:http://docs.python.org/tutorial/classes.html – 2010-02-05 02:28:05