2016-11-02 54 views
1

我是關於Django,Python和一般網絡編程的新手。我可能有一個愚蠢的問題,但我在這裏試圖從一週前解決它。如何添加第二個表單到我的Django項目?

我有一個關於食物的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

​​

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保存數據沒有問題。我在這裏搜索了一些問題,但看起來每個人都有相同的觀點有兩種形式的問題,但我認爲這不是我的問題,我有人可以幫助我,我會很感激。

回答

0

的真正原因,你不能將數據保存到你的表是因爲這一點:

form.save 

應該

form.save() 

解決了還有其他幾件事情o考慮。例如,您的會員不應該被允許登錄嗎?如果是的話,你在這裏重新發明輪子。 YOu可以使用django.contrib.auth.models.User作爲你的用戶模型,並利用諸如django-registration之類的許多久經考驗的django認證系統之一來完成這項任務,而不費吹灰之力。

+0

我很慚愧,它那麼愚蠢的錯誤,非常感謝,我同時感到傷心和快樂。實際上,我只是在練習這個例子,我不是在想登錄,但無論如何感謝,因爲現在我知道如何去做。 – M121

+0

很高興有幫助。每個人在開始時都會犯這樣的錯誤。 – e4c5

0

我是一名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(); 
}); 
+0

這真是太蠢了我的錯誤,謝謝無論如何,我不能投票給你,因爲我的聲譽。 – M121

相關問題