在我的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对象中的最大成员数量等于成员数量
在此先感谢,
迪恩
答案 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')
通过这种方式,您可以确保每个成员只能参加一次讲座,并且您可以愉快地查询任何模型,以获取对您正在寻找的数据的访问权。