ObjectModel访问传入的关系

时间:2016-09-19 12:26:46

标签: neo4j py2neo

我有两个节点AB。它们具有从AB的有向关系。

因此,A的{​​{1}}归因于ConnectedTo类型。但是,我希望迭代所有RelatedTo个节点,并从B访问传入的关系。

我该怎么做?

我尝试将A类型的ConnectedTo属性添加到RelatedFrom,但在查询图表时,我得到B

ValueError('Invalid Identifier')

导致错误:

class A(GraphObject):

    __primarykey__ = "hash"

    hash = Property()

    ConnectedTo = RelatedTo('B')

    def __init__(self, hash):
        self.hash = hash


class B(GraphObject):

    __primarykey__ = "hash"

    hash = Property()

    ConnectedTo = RelatedFrom('A')

    def __init__(self, hash):
        self.hash = hash


>>> a = A("testA")
>>> b = B("testB")
>>> a.ConnectedTo.add(b)
>>> graph.push(a)
>>> graph.push(b)
>>> test = B.select(graph).first()

1 个答案:

答案 0 :(得分:1)

解决方案比预期的要容易:

class TestA(GraphObject):
    __primarykey__ = "hash"
    hash = Property()
    CONNECTEDTO = RelatedTo('TestB')
    def __init__(self, hash):
        self.hash = hash
class TestB(GraphObject):
    __primarykey__ = "hash"
    hash = Property()
    CONNECTEDTO = RelatedFrom('TestA', "CONNECTEDTO")
    def __init__(self, hash):
        self.hash = hash

>>> a = A("testA")
>>> b = B("testB")
>>> a.ConnectedTo.add(b)
>>> graph.push(a)
>>> graph.push(b)
>>> test = B.select(graph).first()
>>> list(test.CONNECTEDTO)
[ TestA ]

重要的部分是RelatedFrom('TestA','CONNECTEDTO')。您必须指定调用传入连接的内容。