我正试图推翻
__init__
方法更新
roles
我的表单字段。这将引发一个验证错误,该错误表示:
选择一个有效的选项。这个选择不是一个可行的选择。
…然后返回此表单,其中没有选项
角色
字段。
表单.py
class UserRegisterForm(UserCreationForm):
role = forms.ModelChoiceField(
queryset=EmployeeType.objects.all(),
empty_label=None,
required=False)
supervisor = forms.ModelChoiceField(
queryset=Employee.objects.all(),
required=False)
def __init__(self, *args, **kwargs):
self.company = (kwargs.pop('company', None))
super(UserRegisterForm, self).__init__(*args, **kwargs)
self.fields['role'].queryset = EmployeeType.objects.filter(company=self.company)
self.fields['supervisor'].queryset = Employee.objects.filter(company=self.company, supervisor=None)
视图.py
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
employee = Employee.objects.get(username=form.instance)
user_count = request.tenant.employee_set.count()
if user_count > 1:
form.instance.is_active = False
if form.instance.role:
group_obj = form.instance.role.group
group = Group.objects.get(name=group_obj)
employee.groups.add(group)
company = request.tenant
form.instance.company = company
return redirect('verify-redirect')
else:
form = UserRegisterForm(company=request.tenant)
return render(request, 'employees/register.html', {'form': form})
如何修复表单验证错误?