我正在构建“简单”表单来收集诸如姓名,电话,街道之类的数据。在关于街道类型(林荫大道,街道,大街等)的模型中,我也有一个ForeignKeyField。我想在我的html文件中也有表单并选择标签。这最后一个表演各种街头的roperly但是,当选择一个,按下SAVE按钮所有的数据被保存在数据库中,但一个在下拉菜单后。有任何想法吗? (问题出在“#Tipo_Via”中) (谢谢!)
我的视图如下:
def home(request):
clientes = Cliente.objects.all().order_by('apellido1')
tipo_via = TipoVia.objects.all()
context = {
'hola':'kevin',
'clientes': clientes,
'tipo_via': tipo_via,
# 'tipo_via_id': tipo_via_id
}
if request.method == 'POST':
cliente = Cliente() #Instance
tipo_via = TipoVia()
print(request.POST.get("tipo_via"))
# nombre
cliente.nombre=request.POST.get('nombre')
nombre=request.POST.get('nombre')
cliente.nombre.capitalize()
if nombre == "":
raise ValidationError("Falta nombre")
# apellido1
cliente.apellido1 = request.POST.get('apellido1')
# apellido 2
cliente.apellido2 = request.POST.get('apellido2')
# email
cliente.email = request.POST.get('email')
email = request.POST.get('email')
if email !="" and "@" not in email:
raise ValidationError("El mail no es correcto. Contiene el símbolo @ y termina con una extensión .algo")
# dni
cliente.dni = request.POST.get('dni')
dni = request.POST.get('dni')
if dni !="" and len(dni) != 9:
raise ValidationError("El DNI ha de tener 8 números y un letra")
# Tipo_Via
cliente.tipo_via = request.POST.get('TipoVia')
# Dirección
cliente.direccion = request.POST.get('direccion')
# Número
cliente.numero = request.POST.get('numero')
cliente.piso = request.POST.get('piso')
cliente.ciudad = request.POST.get('ciudad')
# código postal
cliente.codigopostal = request.POST.get('codigopostal')
codigopostal = request.POST.get('codigopostal')
if codigopostal != "" and len(codigopostal) != 5:
raise ValidationError("El código postal contiene 5 números")
# municipio
cliente.municipio = request.POST.get('municipio')
cliente.pais = request.POST.get('pais')
cliente.notas =request.POST.get('notas')
print(request.POST)
cliente.save()
else:
print(request.GET)
return render(request, "apps/projects/clients/home.html", context)
还有我的html,虽然我认为问题不在这里,但是在views.py中:
<h1>Estructura</h1>
<h2>Clients</h2>
<p>{% for h in hola %}
{{ h }}
{% endfor %}</p>
<form action="" method="post" name="cliente">
{% csrf_token %}
<label for="nombre">Nombre</label>
<input type="text" name="nombre" autocomplete="off">
<label for="apellido1">1º Apellido</label>
<input type="text" name="apellido1" autocomplete="off">
<label for="apellido2">2º Apellido</label>
<input type="text" name="apellido2" autocomplete="off">
Email <input type="email" name="email" autocomplete="off">
DNI <input type="text" name="dni" autocomplete="off">
Tipus VIA<select method="post" title="tipo_via" name="tipo_via" id="tipo_via" form="cliente" >
<option value selected></option>
{% for t in tipo_via %}
<option value="{{t.id}}">{{t.nombre}}</option>
{% endfor %}
</select>
Tipo de via<input type="text" name="tipo_via">
Direccion <input type="text" name="direccion" autocomplete="off">
Numero <input type="text" name="numero" autocomplete="off">
Piso <input type="text" name="piso" autocomplete="off">
Ciudad <input type="text" name="ciudad" autocomplete="off">
Codigopostal <input type="text" name="codigopostal" autocomplete="off">
Municipio <input type="text" name="municipio" autocomplete="off">
Pais <input type="text" name="pais" autocomplete="off">
<textarea name="notas" rows="8" cols="80" placeholder="Notas"></textarea>
<input type="submit" value="Guardar">
<input type="button" name="newitem" value="Nou" onClick="window.location.href=window.location.href">
</form>
<div class="fclients">
<table class="tclients">
<thead>
<tr>
<td>Nombre</td>
<td>Email</td>
<td>DNI</td>
<td>Vía</td>
<td>Dirección</td>
<td>Número</td>
<td>Piso</td>
<td>Ciudad</td>
<td>CódigoPostal</td>
<td>Municipio</td>
<td>País</td>
<td>Notas</td>
</tr>
</thead>
<tbody>
{% for c in clientes%}
<tr>
<td>{{c.nombre}} {{c.apellido1}} {{c.apellido2}}</td>
<td>{{c.email}}</td>
<td>{{c.dni}}</td>
<td>{{c.tipo_via}}</td>
<td>{{c.direccion}}</td>
<td>{{c.numero}}</td>
<td>{{c.piso}}</td>
<td>{{c.ciudad}}</td>
<td>{{c.codigopostal}}</td>
<td>{{c.municipio}}</td>
<td>{{c.pais}}</td>
<td>{{c.notas}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>