我有两种形式:
class PersonForm(forms.Form):
name = forms.CharField()
def clean(self):
print "Validating Person"
def save(self):
print "Saving Person"
def InstrumentForm(forms.Form):
instrument = forms.CharField()
def clean(self):
print "Validating Instrument"
def save(self):
print "Saving Instrument"
我需要声明另一个表单,这个表单是这些表单的子类。我正在使用这种方法
替代FormWizard
。
def BandForm(PersonForm, InstrumentForm):
def clean(self):
print "Validating Band"
def save(self):
print "Saving Band"
我可以这样做吗?当我在BandForm
上调用验证时,我希望首先在PersonForm
上进行验证,然后在InstrumentForm
上进行验证。当我调用save
的{{1}}方法时,我希望先将数据保存在BandForm
中,然后再保存在InstrumentForm
上。
我基本上要做的是将数据一起保存到两个表单中。我遇到了BandForm
的问题,并认为可能会这样做。
感谢。
答案 0 :(得分:1)
将两个表单放在一个表单标记中(请参阅:https://docs.djangoproject.com/en/1.3/ref/forms/api/#prefixes-for-forms),然后根据需要验证并保存它们,例如在视图中:
form1 = PersonForm(request.POST or None, prefix='person')
form2 = InstrumentForm(request.POST or None, prefix='instrument')
if form1.is_valid() and form2.is_valid():
form2.save()
form1.save()
# return redirect
# render forms