我根据使用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