如何防止ManyToManyField('self')将对象链接到自身?

时间:2011-01-10 07:53:13

标签: django django-models

考虑这个模型(针对这个问题简化):

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了解它吗?

1 个答案:

答案 0 :(得分:0)

我认为你的ERD就在这里。我将秘密代理名称作为Aliasses的父级,并将所有名称存储在Alliasses中,只留下秘密代理名称中的meta。然后你需要的是从Alliasses到Secret Agent Names的多对一关系。