如何在Django的ModelChoiceField查询集中使用变量

时间:2019-07-14 21:01:09

标签: python django

我试图在Django中使用表单中的特定数据列表。我正在使用ModelChoiceField从模型中检索需要以表格形式显示的数据(以使用户从scolldown菜单中进行选择)。 我的查询很复杂,因为需要两个基于视图

传递的变量的过滤器

我已尝试使用会话,但根据我的知识,无法以表格的形式导入会话。

form.py

def __init__(self, pass_variables, *args, **kwargs):
   super().__init__(*args, **kwargs)
   self.fields['initiative'] = forms.ModelChoiceField(queryset=raid_User_Initiative.objects.filter(company=pass_variables[1], username=pass_variables[0]).values_list('initiative', flat=True))

view.py

pass_variables = ((str(request.user), companyname))
f = Issue_form(pass_variables)

如果我不传递变量,则该过程有效。问题在于上面的代码,因为该表单未提供任何错误,但未通过 if f.is_valid():

谢谢

1 个答案:

答案 0 :(得分:0)

我解决了自己!无论如何,如果对解决方案感兴趣的人正在使用会话:

form.py

在将查询集声明为:

initiative = forms.ModelChoiceField(queryset=raid_User_Initiative.objects.all(), to_field_name="initiative")

使用 to_field_name =“ initiative”

将查询集修改为:

def __init__(self, user, company, *args, **kwargs):
        super(raid_Issue_form, self).__init__(*args, **kwargs)
        self.fields['initiative'].queryset = raid_User_Initiative.objects.filter(company=company, username=user).values_list('initiative', flat=True)

view.py

f = raid_Issue_form(request.user, request.session['company'])

希望获得帮助!