Python 是否覆盖Django模型的副本?

Python 是否覆盖Django模型的副本?,python,django,Python,Django,复制Django模型对象时,我总是希望它与我从中复制的源对象不具有相同的标识(即主键)。通常你会这样做: copy = copy.copy(source) copy.pk = None copy.save() class MyModel(Model): def __copy__(self): result = MyModel.__new__(MyModel) result.__dict__.update(self.__dict__) re

复制Django模型对象时,我总是希望它与我从中复制的源对象不具有相同的标识(即主键)。通常你会这样做:

copy = copy.copy(source)
copy.pk = None
copy.save()
class MyModel(Model):
    def __copy__(self):
        result = MyModel.__new__(MyModel)
        result.__dict__.update(self.__dict__)
        result.pk = None
        return result
但是我想让它自动的像这样:

copy = copy.copy(source)
copy.pk = None
copy.save()
class MyModel(Model):
    def __copy__(self):
        result = MyModel.__new__(MyModel)
        result.__dict__.update(self.__dict__)
        result.pk = None
        return result
所以我现在可以做:

copy.copy(my_Model).save()
到目前为止,这似乎是可行的。但是,看看Django在
\uuuu init\uuuuu
\uuuu new\uuuuuu
中对模型对象所做的操作,我一直在想这是否确实是允许的,是否符合Django原则。令人惊讶的是,Django模型似乎没有覆盖
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。所以它不会与此冲突

此外,
\uuu eq\uu
方法也通过
pk
进行比较,因此这也不重要


长话短说,没有什么能阻止您重写
\uuu copy\uu
,只要您确保
pk
值在过程中发生更改。

谢谢matsjoyce,我不知道。