2010-07-18 136 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') 

有了,你可以肯定,每个成员都可以只参加一个谈话一次,您可以愉快地查询您的任何模型以访问您正在查找的数据。