复制模型实例并更新字段

时间:2011-09-22 19:38:57

标签: python django django-models

我正在尝试复制我的Page模型的实例,并将新页面的状态设置为“draft”。此代码在Django shell中完美运行,但在它所在的admin操作中,会创建一个新实例,但状态不会更新。

for page in pages:
        page.pk, page.id = None, None
        page.save()
        page.status = Page.DRAFT
        page.updated_at = datetime.now()
        page.save(force_update=True)

因此,上面的代码会创建一个新页面,但不会更改其状态。

我认为它可能与具有代理模型的页面有关,具体取决于状态(PublishedPage,DraftPage等)。但我不确定问题是什么。

2 个答案:

答案 0 :(得分:1)

别。

for page in pages:
    new_page= Page.objects.create(
        this= page.this, that=page.that, ...
        status= Page.DRAFT )

更简单。更清楚。它确实有效。

答案 1 :(得分:0)

事实证明,子类化页面的代理模型具有覆盖我的更新的自定义保存方法。