Неориентированный граф Django

Я хочу создать неориентированного графа в 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 будьте чем-то к эффекту RelatedManager, подобного тому, что было бы установкой или для first_set или для second_set, имел, я использовал related_names, за исключением того, что это будет иметь все узлы, которые могут быть достигнуты с единственным краем, вместо просто тех, которые могут быть достигнуты в одном направлении.

5
задан Bryan Ward 5 January 2010 в 22:30
поделиться

1 ответ

Я должен был сделать что-то похожее с моим текущим проектом. Моим решением было иметь ManyToManyField в моем эквиваленте модели Node. Что-то вроде этого:

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

Обратите внимание, что "Я" выше необходимо, чтобы позволить ManyToManyField указать на себя.

Используя этот код, все узлы, прилегающие к данному узлу N, можно найти с помощью N.adjacent.all().

5
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: