如何在neo4django中扩展Relationship类

时间:2013-04-25 14:58:00

标签: python neo4j neo4django

我已经看到neo4django中尚未实现关系属性。 this thread中公开的变通方法是为每个与属性的关系建立一个新的节点类型。

我承担不起太多的计算,所以我不想使用这种技术。在阅读source code我看过Relationship类的文档字符串时,请:"""Extend to add properties to relationships."""

我的问题是,怎么做?从哪里开始添加至少一个属性?

由于

1 个答案:

答案 0 :(得分:3)

尽管有文档字符串,但这仍然是open issue - 实际上是该项目最早的项目。您可以通过扩展RelationshipBoundRelationship来实现这一目标,但在我能够解决该问题之前,这并不容易。

我认为这个问题可能不会成为使用该项目的瓶颈,因为你可以为Neo4j提供比关系存储更多的内存来计算它。 YMMV当然。

我知道这感觉就像是黑客。如果您确实需要自定义关系属性,则最短路径可能会下降到REST客户端级别。要创建与属性的关系,您可以执行类似

的操作
class Person(NodeModel):
  name = StringProperty()
  friends = Relationship('self', rel_type='friends_with')

pete = Person.objects.create(name='Pete')
dave = Person.objects.create(name='Dave')

# from the neo4j-rest-client [docs][2]
pete.node.relationships.create("friends_with", dave.node, since=123456789, introduced_at="Christmas party")

WDYT?