Django与模型之间的双向关系

时间:2013-04-13 13:03:35

标签: django model foreign-keys

我需要在一组对象之间存储一些关系类型数据(让我们称之为Person)。所以,有些模型是这样的:

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()

...因此,每个人都可以链接到任何其他人。但是,有些关系不是 direction ,所以无论是person1谁是person2(使用这个例子,让我们说PersonA是PersonB的“朋友”)。其他类型的关系是 direction ,其中排序很重要(例如,PersonC是“PersonD的老板”)。

在Django中处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

可能的解决方案是为用户之间的关系建立两个模型。 一个用于方向,一个用于双向 想想你的程序的逻辑。几乎每次从数据库中获取用户时,您都需要知道它是什么样的关系。使用两个关系模型,您将不会遇到这样的问题。这种方式的唯一权衡是你必须进行两次查询以显示人与人之间的所有关系 - 但在大多数情况下,这不是经常的任务。

相关问题