Skip to main content
 首页 » 编程设计

python之将值传递给 Django 表单

2025年05月04日37kenshinobiy

我在谷歌上搜索过,试图找出并理解它是如何工作的,但我仍然没有完全理解这一点。我想要做的是将一个值传递到一个表单中,然后用于查询。我有一个名为 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__

之前弹出实例化表单的 kwarg 很重要
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 的值初始化您的表单