Skip to main content
 首页 » 编程设计

python之如何在 neo4django 中扩展关系类

2024年08月29日31jirigala

我发现关系属性在 neo4django 中还没有实现。 this thread 中公开的解决方法是为每个与属性的关系都有一个新的节点类型。

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

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

谢谢

请您参考如下方法:

尽管有文档字符串,这仍然是一个 open issue - 实际上是该项目最古老的。您可能有一种方法可以通过扩展 Relationship 和 BoundRelationship 来实现它,但在我能够关闭该问题之前,这并不容易。

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

不过,我知道这感觉像是一个 hack。如果您真的需要自定义关系属性,最短的路径可能是下降到 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?