我有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是否支持这种开箱即用的方式?复制模型的通用算法是什么样子的?
干杯
约翰
更新:
上面给出的类只是一个例子来说明我遇到的问题!
这在Django 1.3中不再有效,因为CollectedObjects被删除了。见changeset 14507
I posted my solution on Django Snippets.它主要基于用于删除对象的^{} 代码:
我没有在django中尝试过,但python的deepcopy可能只对您有用
编辑:
如果实现以下函数,则可以定义模型的自定义复制行为:
这里有一个简单的方法来复制你的对象。
基本上:
(1)将原始对象的id设置为“无”:
book_to_copy.id=无
(2)更改“author”属性并保存ojbect:
book_to_copy.author=新作者
预订到副本。保存()
(3)执行插入而不是更新
(这并不是要改变页面中的作者——我同意关于重新构建模型的评论)
相关问题 更多 >
编程相关推荐