2011-01-31 80 views
0

在我看来,我有一个预订信息,在预订中,我与预订中的组的大小有多对多的关系,年龄。班级(团体规模,年龄)具有多对多的关系。预订完成后,我希望用户能够添加课程详细信息。所以预订可以有很多课程。我如何处理Django中的多对多关系

我试过使用inline_formset_factory,但它不喜欢多对多的关系,并根据文档inline_formset_factory是关于ForeignKey关系(我可能很容易在这里错误)。此外,它似乎我需要一个预订实例,然后才可以使用inline_formset_factory(虽然我可能会错)

所以回顾我是django的新手,我试图通过表单添加许多类到预订这是与预订表格。我只是不确定我是否在正确的轨道上。

我希望这是有道理的。提前致谢。

回答

1

不是自己创建表单,而是使用ModelForm,它会将表单绑定到应用中的模型,自动创建需要保存或编辑其链接模型实例的字段类型。


最简单的方法为Booking实例添加到你的数据库是使用一个ModelForm

from django.db import models 
from django.forms import ModelForm 

class Booking(models.Model): 
    ... 

class BookingForm(ModelForm): 
    class Meta: 
     model = Booking 

the Django docs的更多信息,ModelForm秒。接下来,在您的视图中创建的BookingForm的实例传递在你的模板方面:

def your_view(request): 
    if request.method == 'POST': 
     form = BookingForm(request.POST) 
     if form.is_valid(): 
      booking = form.save() 
      return HttpResponseRedirect('/success/url/') 
    else: 
     form = BookingForm() 

    return direct_to_template(request, 'your/template.html', { 
     'form': form 
    }) 

有关处理表单在您的看法Django文档看using a form in a view更多信息。接下来,在您的模板,你可以简单地打印整个形式(和所有相关的字段),像这样:

<form action="" method="post"> 
    {{ form.as_p }} 
    <input type="submit" name="submit" value="submit"> 
</form> 

对模板形式的更多信息,请displaying a form using a template

+0

谢谢马库斯。但我已经在为我的表单使用`ModelForm`。也许我没有正确解释自己。我有一张预订表格。但在表单中我需要添加许多类(这是一种表单本身),我希望用一种形式来做到这一点。而不是2个单独的 – sdk900 2011-01-31 03:39:17