Bry*_*ard 5 django graph django-models
我想在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)
Run Code Online (Sandbox Code Playgroud)
我some_node.connected_nodes_set想要的是一个与RelatedManager有关的东西,类似于我使用related_names时为first_set或second_set设置的东西,除了它将具有单个可以到达的所有节点边缘,而不仅仅是那些可以在一个方向上到达的边缘.
我必须做一些与我目前的项目类似的事情.我的解决方案是拥有ManyToManyField与我的Node模型相当的东西.像这样的东西:
class Node(models.Model):
adjacent = models.ManyToManyField("self", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
请注意,上面的"self"是必要的,以允许ManyToManyField指向自身.
使用此代码,N可以使用找到与给定节点相邻的所有节点N.adjacent.all().
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |