我根據使用GETATTR()函數給出的參數創建它加載型動物形式的圖獲得:將參數傳遞給一個形式由「GETATTR()」
form = getattr(forms, service.form)
但在我所需要的形式我的用戶名來過濾我的文件,所以我有這樣的:
class MyForm(forms.Form):
filename = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)
K = forms.CharField(label='K', max_length=1)
fullOut = forms.CharField(label='fullOut', max_length=1)
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.user = kwargs.pop('user', None)
self.fields['filename'].queryset = userFile.objects.filter(self.user)
的問題是,我不知道如何通過「request.user」在我GETATTR()funtion。我知道,如果它是靜態的,應該是這樣的:
form = MyForm(user=request.user)
但我已經試過喜歡出頭:
form = getattr(forms, service.form, user=request.user)
而且它不會work.I'm嘗試這一點,但任何想法如何在表單中列出用戶文件將受到歡迎。 在此先感謝。
但我的表單是我的應用程序中定義的forms.py(內容在問題中)。然後在我的views.py我有導入'從腳本導入窗體'和我的看法與getattr(窗體,窗體名)功能。 – Sergiodiaz53
'MyForm = getattr(forms,'MyForm')'將返回與'from scripts.forms import MyForm'完全相同的類。如果實例化該表單正在提供錯誤,請發佈回溯。 – Alasdair
是的。如果你檢查表單的代碼,它期望__init__中的'user'參數正確嗎?所以,如果我調用窗體如:form = MyForm(user = request.user)它可以工作,但如果我沒有傳遞用戶參數它會引發我:TypeError:__init __()有一個意想不到的關鍵字參數'user' – Sergiodiaz53