Клонировать существующий документ в новый документ класса родного брата, используя mongoengine - PullRequest
3 голосов
/ 19 марта 2012

У меня есть следующие классы

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?

1 Ответ

4 голосов
/ 16 мая 2012

Да, это возможно, но вам нужно использовать глубокую копию

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

from copy import deepcopy

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

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

Клонирование!

...