Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将值传递到django表单_Python_Django_Forms - Fatal编程技术网

Python 将值传递到django表单

Python 将值传递到django表单,python,django,forms,Python,Django,Forms,我在谷歌上四处搜索,试图弄明白这是如何工作的,但我仍然没有完全正确地理解这一点。我要做的是将一个值传递到表单中,然后用于查询。我有一个名为menu_term的会话变量,它决定表单中的选项 从views.py def manage_groups(request): form = CourseGroupForm(request,current_term=request.session.get('menu_term')) return render_to_response("accounts/

我在谷歌上四处搜索,试图弄明白这是如何工作的,但我仍然没有完全正确地理解这一点。我要做的是将一个值传递到表单中,然后用于查询。我有一个名为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))   
来自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'
为了让其他人了解这一点,定义从外部传入值的表单的正确方法是什么

谢谢, 很好的一天
MJ

在调用表单super
\uuuuu init\uuuuu

class CourseGroupForm(ModelForm):
 def __init__(self, current_term, *args, **kwargs):
    current_term = kwargs.pop('current_term')
    super(CourseGroupForm, self).__init__(*args, **kwargs)
以上假设当前术语始终存在


正如@vishen指出的,检查您的参数,您正在使用
request
作为
current\u term

的值初始化表单,在调用表单super
\u init\u

class CourseGroupForm(ModelForm):
 def __init__(self, current_term, *args, **kwargs):
    current_term = kwargs.pop('current_term')
    super(CourseGroupForm, self).__init__(*args, **kwargs)
以上假设当前术语始终存在


正如@vishen指出的,检查您的参数,您正在初始化您的表单,将
request
作为
current\u term

的值,因为在您的模型表单init中发生了错误

 class CourseGroupForm(ModelForm):
     def __init__(self, current_term, *args, **kwargs)
current\u term
是表单希望找到的第一个参数,但是由于您首先传递
请求
对象,然后是
current\u term
,因此您有效地传递了以下参数

form = CourseGroupForm(current_term=request,current_term=request.session.get('menu_term'))

因此,关键字参数“current_term”的错误消息包含多个值

发生错误是因为在您的模型形式中initdecelleration

 class CourseGroupForm(ModelForm):
     def __init__(self, current_term, *args, **kwargs)
current\u term
是表单希望找到的第一个参数,但是由于您首先传递
请求
对象,然后是
current\u term
,因此您有效地传递了以下参数

form = CourseGroupForm(current_term=request,current_term=request.session.get('menu_term'))

因此,关键字参数“current_term”的错误消息包含多个值

您也可以在kwarg上调用'del':“del kwargs['current_term']”将其删除。此外,请指出此行“self.fields['courses'].queryset=forms.ChoiceField(label='Select Course',choices=courseslist)”是错误的。他在指定一个字段,其中应提供查询集。您也可以在kwarg上调用“del”:“del kwargs[“当前学期]”,以删除它。此外,请指出此行“self.fields[“courses”]。queryset=forms.ChoiceField(label='Select Course',choices=courseslist)”是错误的。他正在分配一个字段,其中应该给出查询集