Django のドキュメントでは、次のようにモデル インスタンスをコピーすることを推奨しています。
original.pk = None
original.save()
しかし、「継承を使用する」場合、つまり、モデルのクラスがのサブクラスのサブクラスであるmodels.Model場合は、少し異なる方法で行う必要があります。
具体的には、ドキュメントは次のように述べています。
継承の仕組みにより、pk と id の両方を None に設定する必要があります。
これに類似した例を示します。
original.pk = None
original.id = None
original.save()
これは不器用に思えます。いずれにせよ、何が起こっているのかを理解したいと思います。id継承を使用すると、フィールドも設定する必要があるのはなぜNoneですか? どのような場合でも、すべての Django モデルが継承するわけではありませんmodels.Modelか?
(注: 私は m2m フィールドのコピーに関するドキュメントから少し省略しています。