【发布时间】:2013-01-04 10:16:48
【问题描述】:
我有 4 个模型需要同时存储数据。为此,我正在考虑使用 ModelForms。
我同时测试了 2 个 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')
查看:
def submit_data_entry_view(request):
form_main = MainForm(request.POST)
form_bicyclead = BicycleAdForm(request.POST)
return render_to_response('app/submit_data_entry.html', {'form_main': form_main, 'form_bicyclead': form_bicyclead}, context_instance=RequestContext(request))
模板:
<form method="post" action="">
{{form_main}}
{{form_bicyclead}}
</form>
最后我只得到浏览器中输出的“form_bicyclead”?我怎样才能同时获得这两个表格?
最好的问候,
【问题讨论】:
-
你使用的是什么版本的 Django?
-
那么我恳请您重新审视您的代码并使用基于类的视图对其进行更新,它们需要一些学习,但当您掌握它们时它们确实会发光。只是一个提示,我会看看我是否可以回复你! :)
-
我建议在单个页面上呈现多个表单时对每个表单使用
prefix选项,以避免不同模型之间的字段名称冲突的可能性。请参阅docs.djangoproject.com/en/dev/ref/forms/api/…(这不应该在这里引起您的问题,只是另一个提示)。
标签: python django modelform django-forms