[英]Django Forms, having multiple “Models” in Meta class?
我們可以在表單的“元類”部分中定義多個模型嗎?
這是我的例子:
from django import forms
from django.contrib.auth.models import User , Group
from django.forms import ModelForm
from django.utils.translation import ugettext as _
from profiles.models import Student , Tutor
class RegistrationForm(ModelForm):
email = forms.EmailField(label=_('Email Address:'))
password = form.CharField(label=_('Passsword:') , widget = forms.PasswordInput(render_value = False))
password1 = form.CharField(label=_('Verify Passsword:') , widget = forms.PasswordInput(render_value = False))
class Meta:
model = [Student , Tutor] ## IS THIS TRUE ???
不,但你不需要。 而不是實例化和驗證單個表單,而是為您需要支持的每種類型的表單執行此操作。
# Define your model forms like you normally would
class StudentForm(ModelForm):
...
class TutorForm(ModelForm):
...
class RegistrationForm(Form):
email = ...
...
# Your (simplified) view:
...
context = {
'student_form': StudentForm(),
'tutor_form': TutorForm(),
'registration_form': RegistrationForm()
}
return render(request, 'app/registration.html', context)
# Your template
...
<form action="." method="post">
{{ student_form }}
{{ tutor_form }}
{{ registration_form }}
<input type="submit" value="Register">
</form>
如果這意味着字段名稱在表單中重復,請使用表單前綴對其進行排序。
不,不可能在Meta類中定義多個模型。
您可以為每個模型創建模型表單,然后使用prefix參數將多個表單放在同一個html <form>
標記中。
然后在您的視圖中,您可以在保存之前檢查每個模型表單是否有效。
請注意,django contrib.auth應用程序附帶了UserCreationForm
( 查看源代碼 )。 您可以重復使用它而不是編寫自己的表單。
form1
#using 1st model
form2
#using 2nd model
args = {
"form1" = form1(),
"form2" = form2()
}
return render(request, "template_name", args)
<form .....>
form1.as_p
form2.as_p
...
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.