首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制/关闭neo4django模型对象

复制/关闭neo4django模型对象
EN

Stack Overflow用户
提问于 2013-05-25 14:31:22
回答 1查看 73关注 0票数 1

我想知道是否有一种聪明的方法可以在neo4django中创建节点的精确克隆,而不必手动复制每个属性和关系。

代码语言:javascript
复制
p = Person.create(name="John Doe")
p.connect(...)

new_p = p 

不会起作用,因为new_p不会是克隆(具有相同内容的新的单独节点),而是指向相同节点的不同指针。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-26 04:50:36

那么,您是否需要图中的新节点,或者Django模型的副本?

要创建一个具有相同属性(但不是相同关系)的副本和一个新的图中节点,您可以尝试如下所示

代码语言:javascript
复制
p = Person.objects.create(name="John Doe")
p2 = Person.objects.create(**p.node.properties)

对关系做同样的事情有点困难,但我以前做过,如果你需要的话,我可以写一个要点。或者,这也可以在Gremlin或Cypher (使用ne4django的helper函数)中完成,如果这更适合的话,例如

代码语言:javascript
复制
from neo4django.db import connection
p = Person._neo4j_instance(connection.gremlin('results=<some code that yields a copied node>'))

如果您只需要Django模型的一个副本,即不同的Python对象(但仍然附加到相同的节点),您可以尝试

代码语言:javascript
复制
>>> p = Person.objects.create(name="John Doe")
>>> p2 = Person.from_model(p)
>>> print p2.name
John Doe

哈!

编辑:

我怎么会忘记呢--这里面有一个方便的方法!

代码语言:javascript
复制
>>> john = Person.objects.create(name="John Doe")
>>> john_2 = john.copy_model()
>>> john.name == john_2.name
True

关系和属性都被复制,尽管返回的模型未保存-它们不共享图形中的节点。

很抱歉跑来跑去,也许这会更容易一些。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16747091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档