前言:我是 django 和 db 设计的新手。
超级编辑:我做了一些重大的改变,所以我的改变之前的答案可能会引用不在这里的东西。我道歉。
我会直接看代码:models.py:
class Player(models.Model):
name = models.CharField()
class Team(models.Model):
name = models.CharField()
members = models.ManyToManyField(Player, through='Membership')
class Word(models.Model):
word = models.CharField(unique=True)
definition = models.CharField()
...
class Ownership(models.Model):
owner = models.ForeignKey(Player)
team = models.ForeignKey(Team)
word = models.ForeignKey(Word)
class Membership(models.Model):
team = models.ForeignKey(Team)
player = models.ForeignKey(Player)
Word 表已被填充。在管理员中,我创建了一个播放器。然后我创建一个团队并向其中添加成员。我已将所有权添加到管理员。我创建了一个新的所有权,我可以从球员、球队和文字中挑选。我想设置一个约束条件,如果一个球员拥有一个给定球队的词,那么属于该球队的球员不能在球队内拥有这个词。他们可能在其他团队中拥有这个词。
现在的样子。我可以让同一支球队的两名不同球员拥有同一个词。坏的。基本上,我希望管理员说出这个团队中拥有的所有单词,而不是让它们在下拉列表中可用。
我如何模拟这种关系?如何在管理员中获得此功能?
编辑:我添加了会员模型只是为了表明我正在尝试解决一个不同的问题。正如我所说,这是我真正使用的简化示例。如您所见,我已经完成了成员关系,我正在尝试解决一个单独的所有权问题。