具有多个“模型”的Django表单在Meta类? [英] Django Forms, having multiple "Models" in Meta class?
本文介绍了具有多个“模型”的Django表单在Meta类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的例子:
从django导入表单$ b来自django.contrib.auth.models的用户
从django.forms导入的
$ b来自django.forms import的ModelForm
从django.utils.translation导入ugettext为_
从profiles.models import学生,导师
class RegistrationForm(ModelForm):
email = forms.EmailField(label = _地址:'))
password = form.CharField(label = _('Passsword:'),widget = forms.PasswordInput(render_value = False))
password1 = form.CharField(label = _ '验证密码:'),widget = forms.PasswordInput(render_value = False))
class Meta:
model = [学生,导师] ##这是真的吗?
解决方案
但你不需要。不需要实例化和验证单个表单,请为需要支持的每种形式的表单进行操作。
#定义你的模型窗体,就像你通常会
class StudentForm(ModelForm):
...
class TutorForm(ModelForm):
...
class RegistrationForm(Form):
email = ...
...
#您的(简化)视图:
..
context = {
'student_form':StudentForm(),
'tutor_form':TutorForm(),
'registration_form':RegistrationForm()
}
return render(request,'app / registration.html',context)
#你的模板
...
< form action =。方法= POST >
{{student_form}}
{{tutor_form}}
{{registration_form}}
< input type =submitvalue =Register>
< / form>
如果这意味着字段名称在表单之间重复,请使用表单前缀排序。
Can we define multiple models in the "Meta class" part of a Form ?
Here is my example:
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 ???
解决方案
No. But you don't need to. Instead of instantiating and validating a single form, do it for each type of form you need to support.
# 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>
If this means field names are duplicated across forms, use form prefixes to sort that out.
这篇关于具有多个“模型”的Django表单在Meta类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文