Джанго ненаправленный граф - PullRequest
5 голосов
/ 05 января 2010

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

1 Ответ

5 голосов
/ 06 января 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...