如何在没有Django表单的情况下保存ForeignKey字段

时间:2020-01-03 03:17:52

标签: python html forms

我正在构建“简单”表单来收集诸如姓名,电话,街道之类的数据。在关于街道类型(林荫大道,街道,大街等)的模型中,我也有一个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>

0 个答案:

没有答案