我有模型 Books
, Chapters
和 Pages
。它们都是由 User
编写的:
from django.db import models
class Book(models.Model)
author = models.ForeignKey('auth.User')
class Chapter(models.Model)
author = models.ForeignKey('auth.User')
book = models.ForeignKey(Book)
class Page(models.Model)
author = models.ForeignKey('auth.User')
book = models.ForeignKey(Book)
chapter = models.ForeignKey(Chapter)
我想做的是复制现有的 Book
并将其更新为 User
给其他人。皱纹是我还想将所有相关模型实例复制到 Book
- 都是 Chapters
和 Pages
当查看 Page
时,事情变得非常棘手——不仅新的 Pages
需要让他们的 author
字段更新新 Chapter
对象!
Django 是否支持开箱即用的方式来做到这一点?复制模型的通用算法是什么样的?
干杯,
约翰
更新:
上面给出的类只是一个例子来说明我遇到的问题!
原文由 jb. 发布,翻译遵循 CC BY-SA 4.0 许可协议
这在 Django 1.3 中不再有效,因为 CollectedObjects 已被删除。参见 变更集 14507
我在 Django Snippets 上发布了我的解决方案。 它主要基于
django.db.models.query.CollectedObject
用于删除对象的代码:对于 django >= 2 应该有一些最小的变化。所以输出将是这样的: