2014-01-29 64 views
0

可以說我有一個Person模型以及一個Event模型。哪種方式使用django模板

事件與人物

class Event(models.Model): 
    canceled_persons = models.ManyToManyField('Person', related_name='canceled') 
    confirmed_persons = models.ManyToManyField('Person', related_name='confirmed') 
    no_response = models.ManyToManyField('Person', related_name='no_response') 

當創建一個事件它發送電子郵件到組中的人與他們聯繫,以點擊更新他們的狀態ManyToMany關係。默認情況下,它們都列在「no_response」中。除了通過電子郵件更新外,他們還可以致電聯繫人代表更新他們的狀態。

我的問題是我應該如何去設置一個表單,以使它可以一次更新多個。我的第一個想法是讓這些捐助者中的每一個表格,並有單選按鈕旁邊,他們的名字爲canceled, confirmed, no_response和從人底

我應該使用一個modelformset_factory保存按鈕,或者它應該是從事件?還是我忽略了那種更容易的方法?

回答

0

我會設計模型略有不同。 Event模型應該包含事件的細節。一個單獨的班級表示「預訂」應該處理PersonEvent之間的關係。通過這種方式,您可以更好地管理狀態,而無需管理多個多對多關係。對於例如

class Event(model.Models): 
    name = model.CharField(max_length=100) 


class Booking(model.Models): 
    BOOKING_STATES = (
     ("CAN", "Cancelled"), 
     ("CON", "Confrimed"), 
     ("NOR", "No Response"), 
    ) 
    event = model.ForeignKey(Event) 
    person = model.ForeignKey(Person) 
    booking_status = model.CharField(max_length=3, choices=BOOKING_STATES) 

這使得構建formset也變得很容易。