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 フィールドのコピーに関するドキュメントから少し省略しています。