Я пытаюсь переопределить метод __init__
, чтобы обновить набор запросов в поле roles
моей формы. Это выдает ошибку проверки, которая говорит:
Выберите правильный выбор. Этот выбор не является одним из доступных.
.. затем возвращает форму без параметров в этом поле roles
.
forms.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)
views.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})
Как исправить ошибку проверки формы?