django - 覆盖 Django 模型中的深度复制

标签 django django-models overriding deep-copy

来自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/

相关文章:

c++ - 装饰库中的函数

python - 获取多次上传的文件的 Django 生成的唯一名称

python - Django 主页不工作。 - NoReverseMatch 在/en-us/

python - 有没有办法限制 Django 模板中标签和过滤器的使用?

django - 两个字段中的小部件填充值

python - Django 显示 related_name 列表中的第一项

python - Django 查询集更新字段与小写等效 - Django

python - 创建时显示 ModelForm 中的字段,但更新时隐藏它

Java :Interface Method's Overriding

c++ - 根据虚拟方法的存在,有条件地将 mixin 应用于接口(interface)