簡體   English   中英

Django Forms,在Meta類中有多個“模型”?

[英]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查看源代碼 )。 您可以重復使用它而不是編寫自己的表單。

在form.py中定義模型

form1 #using 1st model

form2 #using 2nd model

現在在get方法中編輯views.py.

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM