我有两个实体/模型,个人和事件。
人与事件之间有多到多的联系,一个人可以参与多个事件,在一个事件上多人要去。
一个人不一定要参加一个事件,一个事件可以是空的。
我可以在Django上做这个
class Person(models.Model):
name = models.CharField(max_length=100)
event = models.ManyToManyField(Publication) 这将创建一个具有以下内容的相关表:
id | person_id | event_id但我需要一个人有更多的属性与事件,除了键,如Person's event number, Person's booth等。
在Django文档中,我发现了“低谷”模型。
不清楚(没有找到)的是使用表单创建/更新/删除,所以我需要一些示例和查询集的工作方式;
示例:
发布于 2018-07-11 15:19:31
像这样的东西应该管用。
class Person(models.Model):
name = models.CharField(max_length=100)
events = models.ManyToManyField('Event', through='Attendance')
class Event(models.Model):
attendees = models.ManyToManyField('Person', through='Attendance')
class Attendance(models.Model):
person = models.ForeignKey(Person, related_name='attendances', on_delete=models.CASCADE)
event = models.ForeignKey(Event, related_name='attendances', on_delete=models.CASCADE)
booth = models.CharField(max_length=10)然后,您可以简单地为Attendance对象创建表单/窗体集。您可以通过p.events.all()访问用户的事件,也可以通过p.attendances.all()访问他们的出席(带有这些额外的信息)。同样,您也可以通过e.attendees.all()查看所有参加活动的人,等等。
由于设置了on_delete=models.CASCADE,当事件或个人被删除时,出席人数将消失。
https://stackoverflow.com/questions/51288980
复制相似问题