2012-03-19 3 views
2

У меня есть следующие классыКлонирование существующего документа нового класса родственного документ с использованием mongoengine

class ParentDocument(Document): 
    . 
    . 
    . 

class Child1Document(ParentDocument): 
    . 
    . 
    . 

class Child2Document(ParentDocument): 

    . 
    . 
    . 

Теперь давайте говорить, что у меня есть документ типа Child1Document. Можно ли клонировать его в новый документ типа Child2Document?

Я попытался сделать:

doc1 = Child1Document() 
doc1.attr1 = foo 
doc1.save() 

doc2 = Child2Document() 
doc2 = doc1 

но это преобразует doc2 к типу Child1Document. Есть ли способ скопировать все содержимое doc1 в doc2 без преобразования doc2?

ответ

3

Да, это возможно, но вы должны использовать DeepCopy

Вы код будет выглядеть примерно так:

from copy import deepcopy 

doc1 = Child1Document() 
doc1.attr1 = foo 
doc1.save() 

doc2 = deepcopy(doc1) 
doc2.id = None 
doc2.save() 

клонировали!

Смежные вопросы