Python 尝试将数据保存到一组联机表单时出现问题
我正在开发一个应用程序,它保存管理员分配给开发人员的项目,因为我有一个项目模型和一个任务模型,因为一个项目可以有多个任务,为了在一个项目中保存多个任务,我正在使用一个内联表单集,但我有一个问题,那就是数据没有正确保存 这是我的看法Python 尝试将数据保存到一组联机表单时出现问题,python,django,materialize,Python,Django,Materialize,我正在开发一个应用程序,它保存管理员分配给开发人员的项目,因为我有一个项目模型和一个任务模型,因为一个项目可以有多个任务,为了在一个项目中保存多个任务,我正在使用一个内联表单集,但我有一个问题,那就是数据没有正确保存 这是我的看法 class ProjectCreateView(LoginRequiredMixin, CreateView): login_url = 'users:login' template_name = 'projects/add_project.html'
class ProjectCreateView(LoginRequiredMixin, CreateView):
login_url = 'users:login'
template_name = 'projects/add_project.html'
form_class = ProjectForm
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)
这是我的内联表单集:
ProjectFormSet = inlineformset_factory(
Project, Task, form=TaskForm,
fields=['type_task', 'task'], extra=1, can_delete=True,
)
这是我的模板,使用我正在研究的内联表单集,他们告诉我最简单的方法是使用jquery库来执行此过程:
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="container">
<div class="card">
<div class="card-content">
<h2>Agregar Proyecto</h2>
<div class="col-md-4">
<form method="post">
{% csrf_token %}
<div class="input-field col s12">
<select multiple>
{% for developer in form.developer %}
<option value="{{ developer }}"></option>
{% endfor %}
</select>
<label>{{ form.developer.label }}</label>
</div>
<div class="input-field col s6">
<i class="material-icons prefix">article</i>
{{ form.name }}
<label for="icon_name">{{ form.name.label }}</label>
</div>
<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 class="formset_row">
{% 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="btn btn-success">{{ message }}</button>
<a href="{{ request.META.HTTP_REFERER }}" class="btn btn-danger">Cancelar</a>
</form>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="{% static 'js/jquery.formset.js' %}"></script>
<script>
$('.formset_row').formset({
addText: 'agregar projectos',
deleteText: 'eliminar',
prefix: 'project_set'
});
</script>
</div>
</div>
</div>
{% endblock %}
{%extends“base.html”%}
{%load static%}
{%block content%}
阿格雷加项目
{%csrf_令牌%}
{form.developer%}中的开发人员为%
{%endfor%}
{{form.developer.label}
文章
{{form.name}
{{form.name.label}
{{formset.management_form}
{formset%中表单的%s}
{%if-forloop.first%}
{%form.visible_fields%}
{{field.label | capfirst}}
{%endfor%}
{%endif%}
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field}}
{%endfor%}
{%endfor%}
{{message}}
$('.formset_行').formset({
addText:“agregar projectos”,
deleteText:'eliminar',
前缀:“项目集”
});
{%endblock%}
我用bootstrap开发应用程序,但我将其更改为materialize,从那一刻起,内联表单开始失败,并且我没有正确保存数据的表单