2016-07-25 22 views
0

嗨我在django很新。我想知道是否可以在一個視圖中使用不同的模型。 所以我看了這個頁面https://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/ 它非常有用,但我在瀏覽器頁面上看不到輸出。我在哪裏犯錯了?在一個視圖中的不同模型

我的看法

from .models import Contact, MyUser 
from .forms import ContactForm, UserRegisterForm 
from django.http import HttpResponseRedirect 
from django.shortcuts import render_to_response 

def total_register(request): 
uform = UserRegisterForm() 
cform = ContactForm() 
if request.method == "POST": 
    uform = UserRegisterForm(request.POST or None, instance=MyUser()) 
    cform = [ContactForm(request.POST or None, prefix=str(x), instance=Contact()) for x in range(0,19)] 
    if uform.is_valid() and all([cf.is_valid() for cf in cform]): 
     new_MyUser = uform.save() 
     for cf in cform: 
      new_contact = cf.save(commit=False) 
      new_contact.MyUser = new_MyUser 
      new_contact.save() 
     return HttpResponseRedirect('/') 
else: 
       pform = UserRegisterForm(instance=MyUser()) 
       cform = [ContactForm(prefix=str(x), instance=Contact()) for x in range(0,19)] 
return render_to_response('total_register.html', {'UserRegisterForm': uform, 'ContactForm': cform}) 

我的形式

class UserRegisterForm(forms.ModelForm): 
username = forms.CharField(label = 'isminizi giriniz') 
lastname = forms.CharField(label = 'soyisminizi giriniz')  
password = forms.CharField(widget=forms.PasswordInput) 


class Meta: 
    model = User 
    fields = [ 
     'username', 
     'lastname', 
    ] 
def signup(self, request, user): 
    user.username = self.cleaned_data['username'] 
    user.lastname = self.cleaned_data['lastname'] 


    user.save() 




class ContactForm(forms.ModelForm): 
class Meta: 
    model = Contact 
    fields = ['username','soyad','cinsiyet','unvan','kurum',"bolum","gorev", "uzmanlik","adres","posta_kodu","sehir","ulke","is_tel","ev_tel","fax_no","cep_tel","email"] 

我的網址

url(r'^kayit/', bildirge.views.total_register, name = 'kayit'), 

我的HTML

{% extends "base.html" %} 
{% load crispy_forms_tags %} 


{% block content %} 
<div class='col-sm-6 col-sm-offset-3'> 
<h1>{{ title }}</h1> 
<hr/> 

<form method='POST' action='' enctype='multipart/form-data'>{% csrf_token %} 
{{ form|crispy }} 
<button type='submit'>gonder</button> 
</form> 
</div> 
{% endblock content %} 

在此先感謝

+1

歡迎來到SO!你可能想使用Django的[formset](https://docs.djangoproject.com/en/1.9/topics/forms/formsets/) – Anzel

+0

你得到了什麼錯誤? – MaNKuR

+0

當我去這個視圖的網址,我什麼都看不到,但發送按鈕。它應該顯示我的形式不是嗎? –

回答

1

您正在模板中使用變量form,但您將UserRegisterFormContactForm作爲模板上下文傳遞。

試着這麼做:

<form...> 

{{ UserRegisterForm }} 
{% for form in ContactForm %} 
{{ form }} 
{% endfor %} 
</form> 

兩個提示:

  • 退房formsets處理同一類型的多種形式
  • 請確保你的代碼的縮進格式正確,尤其是與Python
+0

感謝您寶貴的時間。它工作但效率不高,我的頁面中有成千上萬的表單。表單一次又一次地開始......是因爲我用Python或Html編寫的代碼? –

0

您已將兩個變量發送到您的模板,其中包括鍵UserRegisterFormContactForm。您必須在模板中使用這些名稱,而不僅僅是form

相關問題