我在谷歌上搜索过,试图找出并理解它是如何工作的,但我仍然没有完全理解这一点。我想要做的是将一个值传递到一个表单中,然后用于查询。我有一个名为 menu_term 的 session 变量,它确定表单中的选项。
来自 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))
来自 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'];
我得到的错误是:
__init__() got multiple values for keyword argument 'current_term'
为了遇到此问题的其他人的利益,定义从外部传入的值的表单的正确方法是什么?
谢谢, 再会 兆焦耳
请您参考如下方法:
在调用表单 super __init__
class CourseGroupForm(ModelForm):
def __init__(self, current_term, *args, **kwargs):
current_term = kwargs.pop('current_term')
super(CourseGroupForm, self).__init__(*args, **kwargs)
以上假定 current_term 始终存在。
正如@vishen 指出的那样,检查您的参数,您正在使用 request 作为 current_term 的值初始化您的表单
