考虑这个模型(针对这个问题简化):
class SecretAgentName(models.Model):
name = models.CharField(max_length=100)
aliases = ManyToManyField('self')
我有三个名字,"James Bond"
,"007"
和"Jason Bourne"
。 "James Bond"
和"007"
是彼此的别名。
这完全像我想要的那样,除了每个实例也可以是它自己的别名这一事实。这是我要防止的。因此,只要"James Bond"
没有显示为"James Bond"
的别名,就可以有许多SecretAgentNames,彼此都可以是别名。
我可以在模型定义中阻止这种情况吗?如果没有,我可以在任何其他地方阻止它,最好是让Django Admin了解它吗?
答案 0 :(得分:0)
我认为你的ERD就在这里。我将秘密代理名称作为Aliasses的父级,并将所有名称存储在Alliasses中,只留下秘密代理名称中的meta。然后你需要的是从Alliasses到Secret Agent Names的多对一关系。