2013-04-13 71 views
1

我需要存储一组对象之间的一些关系型数据之间的双向关系(我们姑且称之为人的)。所以,一些这样的模型:Django和模型

class Person(models.Model): 
    name = models.CharField(max_length=64) 

class Relationship(models.Model) 
    person1 = models.ForeignKey(Person, related_name='person1') 
    person2 = models.ForeignKey(Person, related_name='person2') 
    relationship_type = models.ChoiceField(choices=...) 
    information = models.TextField() 

......所以,每个人都可以链接到任何其他人。然而,一些关系都没有定向,所以也无所谓谁是PERSON1或谁是PERSON2(这个例子让我们说的人物是PersonB的“朋友”)。其他类型的关系是定向其中排序很重要(比如,PersonC是“PersonD的老板”)。

什么是在Django处理这个最好的方法是什么?

+0

你试过manytomanyfields? – iMom0

+0

人有多少行?你的数据库后端是什么?你将对定向模型和非定向模型进行什么样的查询?你会混合结果而不是定向模型吗? – danihp

回答

1

可能的解决办法是将有两个型号供用户之间的关系。 一个是定向和一个用于双向 想想逻辑程序。几乎每次从数据库中获取用户时,都需要知道它是什么样的关系。有了两个关系模型,你不会有这样的问题。只有权衡这种方式,你必须提出两个查询来显示人与人之间的所有关系 - 但在大多数情况下,这不是常常的任务。