Как видно из названия, я работаю с двумя формами в шаблоне.
И мне было интересно, есть ли способ отправить две или более форм, чтобы сохранить их в функции.Потому что я не знаю, как я могу «определить» правильную форму, которую нужно сохранить.
Это две мои формы:
Форма 1 из экземпляра 'enterprise'
<form method="POST" action='' enctype="multipart/form-data">
{% csrf_token %}
<h4><strong>Datos de empresa:</strong></h4>
<!--Foto del miembro de equipo-->
<h6><strong>Subir logo:</strong></h6>
<input type="file" name="image_path">
<!--Full name-->
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<strong>Nombre de empresa:</strong>
</div>
<div class="col-sm-6 mb-3 mb-sm-0">
<strong>Número de teléfono:</strong>
</div>
<div class="col-sm-6 mb-3 mb-sm-0">
<input class= "form-control" type="text" name="name" maxlength="20" value="{{enterprise.name}}">
</div>
<div class="col-sm-6">
<input class= "form-control" type="tel" pattern="[0-9]{4}-[0-9]{3}-[0-9]{4}" name="phone_number" value="{{enterprise.phone_number}}">
</div>
</div>
<!--Username and email is same in this case-->
<strong>Correo electrónico:</strong>
<div class="form-group">
<input class= "form-control" type="email" name="email" value="{{enterprise.email}}" >
</div>
<!--Date of birth-->
<strong>Fecha de fundación:</strong>
<div class="form-group">
<input class= "form-control" type="date" name="date" value="{{enterprise.date}}" >
</div>
<!--Direction-->
<strong>Dirección:</strong>
<div class="form-group">
<textarea class= "form-control" rows="6" name="direction"
value="{{enterprise.direction}}">{{enterprise.direction}}</textarea>
</div>
<!--Description-->
<strong>Descripción de empresa:</strong>
<div class="form-group">
<textarea class="form-control" rows="6" type="text" name="description" value="{{enterprise.description}}">{{enterprise.description}}</textarea>
</div>
<!--Employees-->
<strong>Número de empleados (aproximado):</strong>
<div class="form-group">
<input class= "form-control" type="number" name="employees" min=1 value="{{enterprise.employees}}">
</div>
<!--Button-->
<hr>
<button class="btn btn-primary " type="submit">Guardar cambios</button>
</form>
Форма 2 из экземпляра contactdata
<form method="post" action='' enctype="multipart/form-data">
{% csrf_token %}
<div class="row">
<div class="col-sm-8">
<div class="form-group">
Define cuál es tu visión y objetivo:
<textarea class= "form-control" rows="6" type="text" name="vision" placeholder=""></textarea>
</div>
</div>
<div class="col-sm-4 ">
<img src="{% static 'img/meta-300x300.jpg'%}" alt="" width="210px" height="210px">
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
¿Cuál es tu horario de atención al cliente?
<input class= "form-control" type="text" name="vision" placeholder="Ejemplo: Lunes a viernes de 7:30am a 6:00pm.">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<img src="{% static 'img/750x450.png'%}" alt="" width="300px" height="200px">
<strong><p>Resolución recomendada: 750x450px.</p></strong>
<input type="file" name="vision">
</div>
</div>
<div class="col-sm-6">
<h5><strong>Foto de cabecera:</strong></h5>
<h7>¡Anímate a subir una foto de cabecera!, al hacerlo transmites mayor confianza a los usuarios, puede ser una foto de tu equipo, lugar de tu trabajo, logotipo o alguna foto de portada que vaya de acuerdo con lo que ofrezcas.</h7>
</div>
</div>
<button class="btn btn-primary " type="submit">Guardar cambios</button>
</form>
Как видите, это две мои формы из шаблона.
Я пытался это сделать, но я получаю ошибку full_clean (), пропустив 1 обязательный позиционный аргумент: 'self', когда я пытаюсь сохранить одну из форм ...
Ошибкаособенно в строке
if form.is_valid() and form2.is_valid():
, когда я пытаюсь проверить две формы ..
def edit_design(request):
clean_designs()
contact = contactData.objects.get(id=0)
temp = Templates.objects.get(temp_selected=True)
enterprise = enterprisedata.objects.get(id=0)
members = teamMembers.objects.filter(existencia=True)
design = Available_design_page(isSelected=True)
if request.method == 'GET':
form = EnterpriseForm(instance=enterprise)
form2 = ContactForm(instance=contactData)
else:
form = EnterpriseForm(request.POST, instance=enterprise)
form2 = ContactForm(request.POST, instance=contactData)
if form.is_valid() and form2.is_valid():
form.save()
form2.save()
return redirect('adminview:save_page')
else:
diccionario=request.POST
print('es invalido: ', diccionario)
return redirect('adminview:edit_design')
contexto = {'form':form,
'form2':form2,
'members':members,
'design':design,
'enterprise':enterprise,
'contact':contact,
}
return render(request, 'adminview/edit_design.html', contexto)
Если кто-нибудь может мне помочь, я ценю -
Спасибо!