2016-11-02 7 views
1

私はDjango、Python、そして一般的なWebプログラミングについては新しいです。私は多分愚かな問題を抱えていますが、私はここで1週間前から修正しようとしています。Djangoプロジェクトに2番目のフォームを追加するにはどうしたらいいですか?

私は食べ物に関するDjangoプロジェクトを持っています。私は2つのフォームが必要です。最初はユーザー登録(membresiaまたはusuario)です。これはうまくいきます。もう1つはレストランを登録することです。

私の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> 

私のレストランデータベースにデータを保存できません。私はエラーを見なかったし、フォームは有効です。シェルからのデータを保存しても問題はありません。私はここで質問を検索しましたが、誰もが同じような見解で2つのフォームを持つことに問題があるように見えますが、これは私の問題ではない、誰かが私を助けることができます、私はとても感謝します。

答えて

0

本当の理由は、このためです:

form.save 

それは

form.save() 

する必要がありますそれ以外にもいくつかのことがあると解決した考慮する。たとえば、メンバーにログインさせるべきではありませんか?はいの場合、あなたはここでホイールを改革しています。あなたはあなたのユーザモデルとしてdjango.contrib.auth.models.Userを使い、django-registrationのような多くの試みられテストされたdjango認証システムのうちの1つを利用して、ほとんどまたは全く努力することなくこのタスクを完了させることができます。

+0

私は恥じています。その馬鹿げたエラーです、ありがとう、私は同時に悲しくて幸せに感じます。実際に私はこの例でしか練習していませんが、私はログインをすることを考えていませんでしたが、とにかく今は私がそれをやる方法を知っているので、とにかく感謝します。 – M121

+0

助けてくれるとうれしいです。誰もが最初にこのようなミスを犯す。 – e4c5

0

私はレール開発者ですが、あなたは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

関連する問題