M_J*_*M_J 1 python forms django
我一直在搜索并弄清楚它是如何工作的,但我仍然没有把握住这一点.我想要做的是将值传递到表单然后用于查询.我有一个名为menu_term的会话变量,它确定表单中的选项.
来自views.py
def manage_groups(request):
form = CourseGroupForm(request,current_term=request.session.get('menu_term'))
return render_to_response("accounts/group_management.html", {'form':form}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
来自forms.py
class CourseGroupForm(ModelForm):
def __init__(self, current_term, *args, **kwargs):
super(CourseGroupForm, self).__init__(*args, **kwargs)
courseslist = Course.objects.filter(term=current_term, num_in=settings.LAB_COURSES).order_by('description').distinct();
print(courseslist)
self.fields['courses'].queryset = forms.ChoiceField(label='Select Course', choices=courseslist)
class Meta:
model = CourseGroup
fields = ['name','courses'];
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
__init__() got multiple values for keyword argument 'current_term'
Run Code Online (Sandbox Code Playgroud)
为了让其他人遇到这种情况,有哪些正确的方法可以定义一个从外部传入值的表单?
谢谢,美好的一天MJ
在调用表单超级之前,弹出kwarg以实例化表单非常重要 __init__
class CourseGroupForm(ModelForm):
def __init__(self, current_term, *args, **kwargs):
current_term = kwargs.pop('current_term')
super(CourseGroupForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
以上假设current_term始终存在.
正如@vishen指出的那样,检查你的参数,你正在使用requestas的值初始化你的表单current_term