簡體   English   中英

如何在Django項目中添加第二個表單?

[英]How can I add a second form to my Django Project?

我是關於Django,Python和一般網絡編程的新手。 我有一個可能是一個愚蠢的問題,但我在這里試圖修復它從一個星期前。

我有一個關於食物的Django項目,我想要兩種形式,第一種是注冊用戶(membresia或usuario)這很好用。 另一個是注冊餐館。

我的Django版本是1.10

models.py

from django.db import models
from django.utils import timezone

# Create your models here.


class Membresia(models.Model):
    nombre = models.CharField(max_length=100)
    cedula = models.CharField(max_length=100)
    celular = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    ciudad = models.CharField(max_length=100)
    direccion = models.CharField(max_length=100)
    creado_en = models.DateTimeField(
                default=timezone.now)

class Restaurante(models.Model):
    nombre = models.CharField(max_length=100)
    nombre_responsable = models.CharField(max_length=100)
    direccion = models.CharField(max_length=100)
    celular = models.CharField(max_length=100)
    ciudad = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    creado_en = models.DateTimeField(
                default=timezone.now)

forms.py

from django import forms
from .models import Membresia, Restaurante





class membresiaform(forms.ModelForm):
    class Meta:
        model = Membresia
        fields = ('nombre', 'cedula','celular','email','ciudad','direccion')
        widgets = {
            'nombre':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu nombre'}),
            'cedula':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu número cédula'}),
            'celular': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu número celular'}),
            'email':   forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu correo electrónico'}),
            'ciudad':  forms.TextInput(attrs={'class': 'form-control','placeholder': 'Ciudad donde vives'}),
            'direccion': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Tu dirección'}),

        }

class restauranteform(forms.ModelForm):
    class Meta:
        model = Restaurante
        fields = ('nombre','nombre_responsable','direccion','celular','ciudad','email')
        widgets = {
            'nombre': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Nombre del restaurante'}),
            'nombre_responsable': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Nombre del representante '}),
            'direccion': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Dirección del restaurante'}),
            'celular' : forms.TextInput(attrs={'class': 'form-control','placeholder': 'El celular de contácto'}),
            'ciudad': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Ciudad de ubicación restaurante'}),
            'email': forms.TextInput(attrs={'class': 'form-control','placeholder': 'Correo eléctronico'}),

        }

views.py

from django.shortcuts import render,render_to_response
from .forms import membresiaform, restauranteform
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.views.decorators.csrf import csrf_protect
from django.utils import timezone





# Create your views here.


def registrar_usuario_web(request):
    if "submit_us" in  request.POST:

        form = membresiaform(request.POST)
        if form.is_valid():
            form.creado_en = timezone.now()
            form.save()

            return HttpResponseRedirect('/')
    else:
        form = membresiaform()

    return render(request,'web/registrarusuario.html', {'form': form})

def registrar_restaurante_Web(request):
    if "submit_res" in  request.POST:
        form = restauranteform(request.POST)
        if form.is_valid():
            form.creado_en = timezone.now()
            form.save

            return HttpResponseRedirect('/')
    else:
        form = restauranteform()

    return render(request,'web/registrarrestaurante.html',{'form':form})

registrarrestaurante.html

{% block content %}
        <form action="/restaurante/registrar/" method="POST">
            <div class="post">
              <h1>Registrar restaurante</h1>
              {% csrf_token %}
                  {{ form.as_p }}
          {% endblock %}


          <div class="form-group">
              <input type="submit" name="submit_res" class="btn btn-submit" value="Enviar">
          </div>
      </form>

我無法在我的Restaurante數據庫中保存數據。 我沒有看到錯誤,表格有效。 如果我從Shell保存數據沒有問題。 我在這里搜索問題,但看起來每個人都有問題要在同一個視圖中有兩種形式,但我認為這不是我的問題,我有人可以幫助我,我會非常感激。

我是一名rails開發人員,但我相信你也可以在Django中做到這一點。

我會在每個提交按鈕和表單中添加ID,然后使用JS提交它們。

<input type="submit" name="submit_res" class="btn btn-submit" value="Enviar" id='submit_res'>

然后

$('#submit_res').click(function () {
   $('#restauranteform').submit();  
});

$('#id_of_other_button').click(function () {
   $('#id_of_other_form').submit();  
});

您無法將數據保存到表中的真正原因是:

form.save

它應該是

form.save()

解決了其他幾件事需要考慮。 例如,您的會員不應該被允許登錄嗎? 如果是的話,你在這里重新發明輪子。 你可以使用django.contrib.auth.models.User作為你的用戶模型,並使用許多經過試驗和測試的django身份驗證系統之一,例如django-registration,只需很少或不費力就可以完成這項任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM