我正在构建一个简单的任务管理系统,其中一个公司可以有多个项目,每个公司都有员工。我想要一个允许经理将用户添加到项目的表格,但要限制可用用户属于公司。
我正在将变量company_pk从视图传递到表单,但是我不确定如何在init函数之外设置/访问变量。
class AddUserForm(forms.Form):
def __init__(self, company_pk=None, *args, **kwargs):
"""
Intantiation service.
This method extends the default instantiation service.
"""
super(AddUserForm, self).__init__(*args, **kwargs)
if company_pk:
print("company_pk: ", company_pk)
self._company_pk = company_pk
user = forms.ModelChoiceField(
queryset=User.objects.filter(company__pk=self._company_pk))
form = AddUserForm(company_pk=project_id)
如前所述,我只想将用户过滤到属于给定公司的用户,但是我不知道如何在init之外访问company_pk 。我收到错误:NameError:未定义名称“ self”
class AddUserForm(forms.Form):
def __init__(self, company_pk=None, *args, **kwargs):
super(AddUserForm, self).__init__(*args, **kwargs)
self.fields['user'].queryset = User.objects.filter(company__pk=company_pk)
user = forms.ModelChoiceField(queryset=User.objects.all())
谢谢,这成功了!我必须稍微修改views.py方法:form = AddUserForm(project.company.pk,request.POST)