我正在尝试建立一个模型,并且正在努力解决如何处理特定关系。有两个对象;人,带有姓名、电子邮件地址等,以及运动,带有姓名、位置等。
我拥有的关系是将玩家映射到运动的单独对象。有一个额外的字段用于特定于这项运动的球员信息。我想有另一个关系,指定一个(可选的)人,它是一项运动的球员的代理。
代理将使得指定的人能够充当玩家(可能在有限的时间内)。例如,假设玩家 A 正在管理 Soccer,并且要去度假两周。他们希望一个人代表他们行事,发送通知,通知其他玩家游戏等。
在 SQL 中,我有一个包含 a player_id
、 asport_id
和另一个player_id
字段的表,这些字段可能为 null(以及到期日期和其他字段)。
但是,我似乎无法弄清楚如何在 Django 模型中指定它。这是我到目前为止所拥有的:
"""Indicates people who are registered for a type of event.
They can have a unique nickname for each event, if desired.
In addition, they can select a proxy for them, who can act in
thier behalf for this event."""
nickname = models.CharField(max_length=30)
event_type = models.ForeignKey(EventType, related_name='+')
person = models.ForeignKey(Person, related_name='+')
proxy = models.OneToOneField(Person, related_name='+') # ?????
proxy_expires = models.DateField(null=True, blank=True)
这似乎使代理成为必填字段,这不是我想要的。关于我如何使用代理的约束进行建模的任何建议都是可选的,每人每项运动一个代理。
谢谢!