来自this question我想到了在 Django 模型中覆盖 deepycopy 的想法。我从该问题中获取了代码片段,并将其放入我的模型中,并带有以下签名:
def __deepcopy__(self, *args, **kwargs):
但是我也希望能够传递“字段”和“值”参数,但这不起作用。当我调用时:
deepcopy(s1, field='foo',value='bar')
尝试使用 kwargs['field'] 和 kwargs['value'] 从方法主体中提取参数时,出现以下错误:
File "<stdin>", line 1, in <module>
TypeError: deepcopy() got an unexpected keyword argument 'field'
顺便说一句,我假设我必须导入 deepcopy 方法才能使用它,我正在这样做:
from copy import deepcopy
我的理解有一些错误,先感谢您的解释。
最佳答案
不确定您到底想对字段和值参数执行什么操作,但您无法按照您想要的方式执行此操作。由于您没有对 deepcopy 函数本身执行任何操作,因此它不知道您在模型 deepcopy 方法中所做的任何更改。
如果您查看有关复制的文档,它会解释如何覆盖复制和深层复制 http://docs.python.org/library/copy.html
如果您确实需要在复制时传递选项,您可以考虑创建自己的方法,而不是尝试覆盖内置行为。
希望这有帮助!请随时回复并提供更多有关您想如何处理其他参数的详细信息。
关于django - 覆盖 Django 模型中的深度复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982833/