我想知道是否有一种聪明的方法可以在neo4django中创建节点的精确克隆,而不必手动复制每个属性和关系。
p = Person.create(name="John Doe")
p.connect(...)
new_p = p 不会起作用,因为new_p不会是克隆(具有相同内容的新的单独节点),而是指向相同节点的不同指针。
发布于 2013-05-26 04:50:36
那么,您是否需要图中的新节点,或者Django模型的副本?
要创建一个具有相同属性(但不是相同关系)的副本和一个新的图中节点,您可以尝试如下所示
p = Person.objects.create(name="John Doe")
p2 = Person.objects.create(**p.node.properties)对关系做同样的事情有点困难,但我以前做过,如果你需要的话,我可以写一个要点。或者,这也可以在Gremlin或Cypher (使用ne4django的helper函数)中完成,如果这更适合的话,例如
from neo4django.db import connection
p = Person._neo4j_instance(connection.gremlin('results=<some code that yields a copied node>'))如果您只需要Django模型的一个副本,即不同的Python对象(但仍然附加到相同的节点),您可以尝试
>>> p = Person.objects.create(name="John Doe")
>>> p2 = Person.from_model(p)
>>> print p2.name
John Doe哈!
编辑:
我怎么会忘记呢--这里面有一个方便的方法!
>>> john = Person.objects.create(name="John Doe")
>>> john_2 = john.copy_model()
>>> john.name == john_2.name
True关系和属性都被复制,尽管返回的模型未保存-它们不共享图形中的节点。
很抱歉跑来跑去,也许这会更容易一些。
https://stackoverflow.com/questions/16747091
复制相似问题