【问题标题】:Django and bidirectional relationship between modelDjango与模型之间的双向关系
【发布时间】:2013-04-05 23:13:56
【问题描述】:

我需要在一组对象之间存储一些关系类型数据(我们称它们为 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()

...因此,每个人都可以链接到任何其他人。但是,有些关系不是定向的,因此谁是 person1 或谁是 person2 并不重要(在这个例子中,假设 PersonA 是 PersonB 的“朋友”)。其他类型的关系是定向,其中顺序确实很重要(例如,PersonC 是 PersonD 的“老板”)。

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

【问题讨论】:

  • 你尝试过manytomanyfields吗?
  • 人会有多少行?你的数据库后端是什么?您将对定向模型和非定向模型执行哪些类型的查询?您将获得定向模型和非定向模型的混合结果?

标签: django model foreign-keys


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 2015-04-24
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多