2011-01-31 75 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