python - 提交表单的修改字段时出错
问题描述
我的表单有问题,当尝试将我的数据保存在数据库中时,这没有正确完成,因为在我的表单中,开发人员字段没有以正确的方式验证,因为它没有显示错误到客户端,但浏览器控制台向我显示以下错误,名称 = '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>
解决方案
推荐阅读
- spring-integration - 使用弹簧集成的 JMS 连接出错
- javascript - 将 JS 对象下载为 JSON 文件时停止浏览器解码编码字符串
- ruby-on-rails - DigitalOcean 应用程序上的 SendGrid + Ruby on Rails 6 + Errno::ECONNREFUSED(连接被拒绝 - “localhost”端口 25 的连接(2)):
- javascript - 函数中的对象
- c++ - 您可以实例化一个类,然后使用 new 为它分配一个不同的类吗(例如 class1 name = new class2)
- python - 如何自动生成变量及其赋值?
- angular - 如何将正文中的两个表分成xml中的两个不同的工作表?
- flutter - 解析 LocalFile 时出错:'E:\android\app\src\main\AndroidManifest.xml' 请确保 android 清单是有效的 XML 文档,然后重试
- crystal-reports - Crystal Reports - 在子报表之间传递变量
- c++ - 程序在 QT opencv 中意外完成