【问题标题】:Django admin action to duplicate a record and edit itDjango 管理操作来复制记录并编辑它
【发布时间】:2014-12-17 10:11:21
【问题描述】:

我知道如何添加操作来复制记录,如下所述: Create a Django Admin Action to Duplicate a Record 要编辑添加的记录,必须手动找到并编辑它。 我想知道我们如何编辑添加的记录作为此操作的一部分,即。该操作保存记录并为此记录调用更改视图(保存和编辑)

【问题讨论】:

  • 您好 user2012749 - 您能否将我的答案标记为正确,以便将此问题标记为已回答? Stackoverflow 依赖于这种机制,不得到正确​​答案并且不正式承认它被认为是不礼貌的。

标签: django


【解决方案1】:

如果有多个添加的记录,我不确定您要做什么。但是,对于单一情况,您可以只重定向到管理页面。您需要查看文档中有关显示更多页面的部分:

https://docs.djangoproject.com/en/1.7/ref/contrib/admin/actions/#actions-that-provide-intermediate-pages

您需要进行重定向以编辑新创建的对象。结合重复的代码,它看起来像:

def duplicate_records(modeladmin, request, queryset):
    object_ids = []
    for object in queryset:
        object.id = None
        object.save()
        object_ids.append(object.id)

    if len(object_ids) == 1:
        return HttpResponseRedirect(reverse('admin:yourapp_yourmodel_change', 
                                    args=(object_ids[0],))
    else:
        return HttpResponseRedirect(reverse('admin:yourapp_yourmodel_changelist')
            + "?id_in={0}".format(",".join(str(i) for i in object_ids))

此代码未经测试,您需要一些导入,但它应该可以工作。对于多对象情况,它应该重定向到仅显示已创建对象的更改列表页面。

【讨论】:

  • 谢谢。有用。我只需要单个对象的情况,但我也会尝试多个情况。
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2014-12-28
  • 2012-09-11
  • 2021-08-03
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多