首页 > 解决方案 > 提交表单的修改字段时出错

问题描述

我的表单有问题,当尝试将我的数据保存在数据库中时,这没有正确完成,因为在我的表单中,开发人员字段没有以正确的方式验证,因为它没有显示错误到客户端,但浏览器控制台向我显示以下错误,名称 = 'developer' 的无效表单控件无法聚焦。这是我的表格:

class ProjectForm(ModelForm):
    developer = forms.ModelMultipleChoiceField(
        queryset=User.objects.filter(groups__name='desarrolladores'),
        label='Desarrolladores',
    )

    class Meta:
        model = Project
        fields = (
            'developer', 'name', 'status'
        )
        labels = {
            'name': 'Nombre de Proyecto',
            'status': 'Estado',
        }

    def clean_developer(self):
        developer = self.cleaned_data.get('developer')
        if developer is None:
            raise forms.ValidationError('El campo es obligatorio')
        return developer

这是我的看法:

class ProjectCreateView(LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageMixin, CreateView):
    login_url = 'users:login'
    template_name = 'projects/add_project.html'
    form_class = ProjectForm
    permission_required = 'projects.add_project'
    success_message = 'Proyecto creado exitosamente'
    success_url = reverse_lazy('projects:project')

    def get_context_data(self, **kwargs):
        data = super().get_context_data(**kwargs)
        if self.request.POST:
            data['formset'] = ProjectFormSet(self.request.POST)
        else:
            data['formset'] = ProjectFormSet()

        return data

    def form_valid(self, form):
        context = self.get_context_data()
        formset = context['formset']

        with transaction.atomic():
            self.object = form.save()

            if formset.is_valid():
                formset.instance = self.object
                formset.save()

        return super().form_valid(form)

这是我的模板:

<form id="form-container" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <h2>Tareas</h2>
    <table>
        {{ formset.management_form }}
        {% for form in formset %}
            {% if forloop.first %}
                <thead>
                    <tr>
                        {% for field in form.visible_fields %}
                            <th>{{ field.label|capfirst }}</th>
                        {% endfor %}
                    </tr>
                </thead>
            {% endif %}
            <tr id="projects_data">
                {% for field in form.visible_fields %}
                    <td>
                        {# Include the hidden fields in the form #}
                        {% if forloop.first %}
                            {% for hidden in form.hidden_fields %}
                                {{ hidden }}
                            {% endfor %}
                        {% endif %}
                        {{ field.errors.as_ul }}
                        {{ field }}
                    </td>
                {% endfor %}
            </tr>
        {% endfor %}
    </table>
    <button type="submit" class="button success"><span class="mif-add icon"></span> {{ message }}</button>
    <a href="{% url 'projects:project' %}" class="button alert"><span class="mif-cancel icon"></span> Cancelar</a>
</form>

这是错误 在此处输入图像描述

标签: pythondjango

解决方案


推荐阅读