2010-07-18 167 views
1

在我的django應用程序中,我有管理網站,我正在嘗試對其進行自定義,以便我可以不斷添加人員以參加活動。我的模型是這樣的:在django中自定義管理網站

class Talk(models.Model): 
title = models.CharField(max_length=200, primary_key=True) 
speaker = models.CharField(max_length=200) 
date_of_talk = models.DateField('date_of_talk') 
def __unicode__(self): 
     return self.title 

class Member(models.Model): 
name = models.CharField(max_length=200) 
telephone_number = models.CharField(max_length=200) 
email_address = models.CharField(max_length=200) 
membership_type = models.CharField(max_length=1, choices=MEMBERSHIP_TYPES) 
membership_number = models.CharField(max_length=200, primary_key=True) 
def __unicode__(self): 
     return self.name 

class Event_Attendance(models.Model): 
talk = models.ForeignKey('Talk') 
membersAttended = models.ForeignKey('Member') 

我希望能夠配置管理界面,這樣我可以不斷加入的成員在event_attendance對象談論的話題。我與很多成員談過一次。我將如何做到這一點?我還希望event_attendance對象中的最大成員數等於成員數。
由於事先
院長

回答

1

你需要使用會員一個ManyToManyField「通過」的說法了:

class Member(models.Model): 
    [...] 
    attending = models.ManyToManyField(Talk, through=Event_Attendance) 

採取不允許超過成員的最大數量更多的照顧參加活動,你可以強制唯一性約束上Event_Attendance像這樣:

class Event_Attendance(models.Model): 
    [...] 
    class Meta: 
     unique_together = ('talk', 'membersAttended') 

有了,你可以肯定,每個成員都可以只參加一個談話一次,您可以愉快地查詢您的任何模型以訪問您正在查找的數據。