Python Django-如何使用多个ModelForm';是同一种形式吗?

Python Django-如何使用多个ModelForm';是同一种形式吗?,python,django,modelform,django-forms,Python,Django,Modelform,Django Forms,我有4个模型需要同时存储数据。为此,我考虑使用ModelForms 我同时测试了两个ModelForm,但它不起作用。这是代码 型号: class Main(models.Model): section = models.ForeignKey(Section) user = models.ForeignKey(User) title = models.CharField(max_length

我有4个模型需要同时存储数据。为此,我考虑使用ModelForms

我同时测试了两个ModelForm,但它不起作用。这是代码

型号:

class Main(models.Model):
    section             = models.ForeignKey(Section)
    user                = models.ForeignKey(User)
    title               = models.CharField(max_length=250)
    date_inserted       = models.DateTimeField(auto_now_add=True)
    date_last_update    = models.DateTimeField(auto_now=True)

    def __unicode__(self):
    return self.title

    # To order in the admin by name of the section
    class Meta:
    ordering = ['date_inserted']


class BicycleAd(models.Model):
    main                = models.ForeignKey(Main)
    bicycleadtype       = models.ForeignKey(BicycleAdType)
    bicycleaditemkind   = models.ForeignKey(BicycleAdItemKind) # MPTT Model
    bicycleadcondition  = models.ForeignKey(BicycleAdCondition)
    country             = models.ForeignKey(GeonamesCountry)       
    city                = models.ForeignKey(GeonamesLocal) 
    date_inserted       = models.DateTimeField(auto_now_add=True)
    date_last_update    = models.DateTimeField(auto_now=True)

    # To order in the admin by name of the section
    class Meta:
    ordering = ['date_inserted']   
表格:

class MainForm(forms.ModelForm):
    class Meta:
    model = Main
    exclude = ('user', 'section')

class BicycleAdForm(forms.ModelForm):
    class Meta:
    model = BicycleAd
    exclude = ('main', 'bicycleadtype', 'bicycleaditemkind', 'bicycleadcondition', 'city')
视图:

模板:

<form method="post" action="">
    {{form_main}}
    {{form_bicyclead}}
</form>

{{form_main}}
{{form_bicyclead}}
最后我只得到浏览器中输出的“form_bicyclead”?我怎样才能同时得到这两张表格


向您致意,

您是否也在使用
submit\u data\u entry\u view
来呈现表单?难道不应该是-

def submit_data_entry_view(request):

    if request.method == 'POST': #form submit
        form_main      = MainForm(request.POST)
        form_bicyclead = BicycleAdForm(request.POST)

        #now process and save the form

        return <whatever_you_want>
    elif request.method == 'GET': #first time rendering the form
        form_main      = MainForm()
        form_bicyclead = BicycleAdForm()

        return render_to_response('app/submit_data_entry.html', {'form_main': form_main, 'form_bicyclead': form_bicyclead}, context_instance=RequestContext(request))
def提交数据输入视图(请求):
如果request.method='POST':#表单提交
form_main=MainForm(request.POST)
form\u bicyclead=BicycleAdForm(request.POST)
#现在处理并保存表单
返回
elif request.method=='GET':#第一次呈现表单
form_main=MainForm()
form_bicyclead=BicycleAdForm()
返回render_to_response('app/submit_data_entry.html',{'form_main':form_main,'form_bicyclead':form_bicyclead},context_instance=RequestContext(request))

您是否也在使用
提交数据\u条目\u视图
来呈现表单?难道不应该是-

def submit_data_entry_view(request):

    if request.method == 'POST': #form submit
        form_main      = MainForm(request.POST)
        form_bicyclead = BicycleAdForm(request.POST)

        #now process and save the form

        return <whatever_you_want>
    elif request.method == 'GET': #first time rendering the form
        form_main      = MainForm()
        form_bicyclead = BicycleAdForm()

        return render_to_response('app/submit_data_entry.html', {'form_main': form_main, 'form_bicyclead': form_bicyclead}, context_instance=RequestContext(request))
def提交数据输入视图(请求):
如果request.method='POST':#表单提交
form_main=MainForm(request.POST)
form\u bicyclead=BicycleAdForm(request.POST)
#现在处理并保存表单
返回
elif request.method=='GET':#第一次呈现表单
form_main=MainForm()
form_bicyclead=BicycleAdForm()
返回render_to_response('app/submit_data_entry.html',{'form_main':form_main,'form_bicyclead':form_bicyclead},context_instance=RequestContext(request))

您使用的是什么版本的Django?然后我恳请您重新审视您的代码,并使用基于类的视图进行更新。这些视图需要一些学习,但当您掌握它们时,它们确实会大放异彩。只是一个提示,我看看能不能给你一个答复!:)我建议在一个页面上呈现多个表单时,对每个表单使用
前缀
选项,以避免不同模型之间的字段名冲突。请看(这不应该引起您的问题,这只是另一个提示)。您使用的是什么版本的Django?然后我恳请您重新访问您的代码,并使用基于类的视图进行更新,它们需要一些学习,但当您掌握了它们的窍门时,它们确实会大放异彩。只是一个提示,我看看能不能给你一个答复!:)我建议在一个页面上呈现多个表单时,对每个表单使用
前缀
选项,以避免不同模型之间的字段名冲突。请参阅(这不应该引起您的问题,只是另一个提示)。