Форма недействительна, но ошибок нет

Когда я отправляю форму, она недействительна и нет никакого сообщения об ошибке, когда я пытаюсь прочитать ее с помощью form.errors; она пуста. Вот что у меня есть:

models.py

class Project(models.Model):
    project = models.CharField(unique=True, max_length=50)
    is_active = models.BooleanField(default=False)

forms.py

from crispy_forms.bootstrap import FormActions
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Row, Column, Submit, Field


class SelectProjectForm(forms.Form):

    def __init__(self, active_choices, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['is_active'] = forms.ChoiceField(choices=active_choices, widget=forms.Select)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Row(
                Column(Field('is_active'))
            ),
            Row(
                Column(FormActions(Submit('activate', 'Activate Project')))
            ),
        )

views.py

class ProjectSettings(LoginRequiredMixin, TemplateView):
    template_name = 'Home/project_settings.html'

    def get(self, request, *args, **kwargs):
        active_choices = []
        for project in Project.objects.all():
            active_choices.append((project.id, project.project),)

        return render(request, self.template_name, {'form': SelectProjectForm(active_choices)})

    def post(self, request, *args, **kwargs):
        if 'activate' in request.POST:
            form = SelectProjectForm(request.POST)

            if form.is_valid():
                ....

            messages.error(request, 'Something went wrong')
            return redirect('project_settings')

project_settings.html:

<div>
    {% load crispy_forms_tags %}
    {% crispy form %}
</div>

Я думаю, что проблема может быть в методе POST в представлениях, где я инициализирую форму, но я не знаю, как передать параметр active_choices в post. Если проблема не в этом, тогда я потерян.

Вернуться на верх