2016-11-02 5 views
1

Я новичок в Django, Python и вообще в веб-программировании. У меня есть, может быть, глупая проблема, но я здесь пытаюсь исправить ее неделю назад.Как добавить вторую форму в проект Django?

У меня есть проект Django о еде, я хочу две формы: первая зарегистрирована пользователем (мембраной или usuario), это прекрасно работает. а другой регистрирует ресторан.

My Джанго версия 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> 

Я не могу сохранить данные в своей базе данных Ресторанов. Я не видел ошибок, и форма действительна. Если я не сохраню данные из Shell, никаких проблем. Я искал вопросы здесь, но похоже, что у каждой проблемы есть две формы с одинаковой точки зрения, но я думаю, что это не моя проблема, я помогаю кому-то, я буду так благодарен.

ответ

0

Реальная причина того, что вы не можете сохранить данные в таблицу из-за этого:

form.save 

должно быть

form.save() 

Решив, что есть несколько других вещей t o рассмотреть. Например, не следует ли разрешать вашим членам войти в систему? Если да, вы изобретаете колесо здесь. Вы можете использовать django.contrib.auth.models.User в качестве модели пользователя и использовать одну из многих проверенных и проверенных систем аутентификации django, таких как django-registration, чтобы выполнить эту задачу с минимальными усилиями или без усилий.

+0

Мне стыдно, это так глупо ошибка, спасибо большое, я чувствую грусть и радость в то же время. Ну, на самом деле, я только практикуюсь с этим примером, я не думал, что я вхожу в систему, но спасибо, потому что теперь я знаю, как это сделать. – M121

+0

рад помочь. Все делают такие ошибки с самого начала. – e4c5

0

Я разработчик rails, но я уверен, что вы тоже можете это сделать в Django.

Я бы добавил идентификаторы каждой кнопки отправки и формы, а затем отправьте их с помощью 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(); 
}); 
+0

Это была такая глупая моя ошибка, спасибо в любом случае, я не могу голосовать за вас, потому что моя репутация. – M121

Смежные вопросы