Django 1.9とPython 3.4私はの既存のモデルインスタンスをコピーします。以下は私が現在どのように達成したかの例です。私の質問は、より良い方法があるということですか?Djangoモデルインスタンスと関連するすべてのデータをコピーするには
私は投稿を読んだ。 Duplicating model instances and their related objects in Django/Algorithm for recusrively duplicating an objectこれは8歳以上で、Django 1.9以降では動作しません。
私はこれを既に達成するように努力していますか、大丈夫か、Django 1.9の方がいいですか?
モデル
class Book(models.Model):
name = models.CharField(max_length=80)
class Contributor(models.Model):
name = models.CharField(max_length=80)
books = models.ForeignKey("Book", related_name="contributors")
コピー機能。それ以外の場合は、新しいBookインスタンスを保存した後にコントリビュータを再作成する必要があります。コピーするインスタンスから既存のコントリビュータを割り当てます。
def copy_book(self, id):
view = self.context['view']
book_id = id
book = Book.objects.get(pk=book_id)
copy_book_contributors = book.contributors.all()
book.id = None
# make a copy of the contributors items.
book.save()
for item in copy_book_contributors:
# We need to copy/save the item as it will reassign the existing one.
item.id = None
item.save()
book.contributors.add(item)
? – AKS
@AKS本は、上記の私の例でタイプミスした寄稿者がたくさんいることがあります。私はそれを修正しました、ごめんなさい。 – MrKnotts