Django管理员复制记录并编辑它的动作

时间:2014-12-17 10:11:21

标签: django

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

1 个答案:

答案 0 :(得分:3)

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

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))

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