在django中自定义管理站点

时间:2010-07-18 15:59:56

标签: django django-admin

在我的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 个答案:

答案 0 :(得分:1)

您需要使用“through”参数在Member上使用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')

通过这种方式,您可以确保每个成员只能参加一次讲座,并且您可以愉快地查询任何模型,以获取对您正在寻找的数据的访问权。