Переопределение глубокой копии в моделях Django - PullRequest
3 голосов
/ 13 февраля 2011

С этот вопрос Мне пришла в голову идея переопределить глубокую копирование в моих моделях Django.Я взял фрагмент кода из этого вопроса и поместил его в свою модель со следующей подписью:

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

Однако я хочу также иметь возможность передавать параметры 'field' и 'value', но это нене работаетКогда я вызываю:

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

с параметрами, пытающимися извлечь из тела метода, используя kwargs ['field'] и kwargs ['value'], я получаю следующую ошибку:

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

Кстати, я предполагаю, что мне нужно импортировать метод глубокой копии, чтобы он вообще использовался, что я и делаю:

from copy import deepcopy

В моем понимании есть некоторая ошибказдесь, спасибо заранее за объяснение.

1 Ответ

1 голос
/ 22 марта 2011

Не уверен, что именно вы пытаетесь сделать с параметрами поля и значения, но вы не можете сделать это так, как пытаетесь. Поскольку вы ничего не делаете с самой функцией deepcopy, она ничего не знает об изменениях, которые вы внесли в ваши модели deepcopy метод.

Если вы ознакомитесь с документацией по копированию, в ней объясняется, как переопределить копирование и глубокую копию http://docs.python.org/library/copy.html

Если вам действительно нужно передавать параметры при копировании, вы можете рассмотреть возможность создания собственного метода вместо попытки переопределить встроенное поведение.

Надеюсь, это поможет! Пожалуйста, не стесняйтесь отвечать более подробно о том, что вы пытаетесь сделать с вашими дополнительными аргументами.

...