覆盖Django模型中的深度复制

时间:2011-02-13 06:39:44

标签: django django-models override deep-copy

this question我得到了在我的Django模型中覆盖deepycopy的想法。我从该问题中获取了代码片段并将其放入我的模型中,并带有以下签名:

def __deepcopy__(self, *args, **kwargs):

但是我希望能够传递'field'和'value'参数,但这不起作用。当我调用时:

deepcopy(s1, field='foo',value='bar')

使用kwargs ['field']和kwargs ['value']试图从方法体中拉出params,我得到以下错误:

File "<stdin>", line 1, in <module>
TypeError: deepcopy() got an unexpected keyword argument 'field'

顺便说一句,我假设我必须导入deepcopy方法才能使用它,我正在使用它:

from copy import deepcopy

我的理解存在一些错误,提前感谢解释。

1 个答案:

答案 0 :(得分:1)

不确定您要对字段和值参数做些什么,但不能按照您尝试的方式进行。由于您没有对deepcopy函数本身做任何事情,因此它对您在模型 deepcopy 方法中所做的更改一无所知。

如果您查看有关复制的文档,请说明如何覆盖复制和深度复制http://docs.python.org/library/copy.html

如果你真的需要在复制时传递选项,你可以考虑制作自己的方法,而不是试图覆盖内置行为。

希望这有帮助!请随时回复更多详细信息,了解您正在尝试使用其他参数。