Django 无向图

标签 django django-models graph

我想在 Django 中构建一个无向图。我已经建立了一个带有两个外键(第一个,第二个)到节点类的边缘模型,但是与related_name 存在冲突。我可以使用 first_set 和 second_set,但由于该图是无向图,因此它是否被喜欢或来自谁都没有关系。处理这种情况的推荐方法是什么?

编辑:以下是我正在使用的大致模型:

class Node(models.Model):
    #some irrelevant stuff

class Edge(models.Model):
    #some other stuff
    first = models.ForeignKey('Node',related_name=None)
    second = models.ForeignKey('Node',related_name=None)

我想要的是some_node.connected_nodes_set是相关管理器的效果,类似于如果我使用了 related_names,将为 first_set 或 second_set 设置的内容,除了它将具有可以通过单个边到达的所有节点,而不仅仅是那些可以在一个方向到达。

最佳答案

我必须对我当前的项目做类似的事情。我的解决方案是拥有一个 ManyToManyField在我相当于你的 Node模型。像这样的东西:

class Node(models.Model):
    adjacent = models.ManyToManyField("self", null=True, blank=True)

请注意 "self"以上是必须允许ManyToManyField指向自己。

使用此代码,与给定节点相邻的所有节点 N可以使用 N.adjacent.all() 找到.

关于Django 无向图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008310/

相关文章:

python - 从 Django 的 RawQuerySet 获取数据库游标

python - Django 与 Heroku 上的 Postgresql - settings.DATABASES 配置不当。请提供 NAME 值

python - 电子邮件验证(1062, "Duplicate entry ''对于 key 'email'“)

javascript图表API?

python - 添加一条边时使boost图只包含两个顶点

python - Heroku 上的 RQScheduler

django - Django REST Framework 故意引发错误时的事务错误

python - 用 HiddenInput 覆盖 ModelChoiceField 不起作用

python - Django:让管理员获取图像文件,但将其存储为 base64 字符串

javascript - D3 TreeMap - 文本中心、控制高度和链接箭头奇怪行为