具有多个“模型”的Django表单在Meta类? [英] Django Forms, having multiple "Models" in Meta class?

查看:113
本文介绍了具有多个“模型”的Django表单在Meta类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们可以在Form中的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆