Django管理操作以复制记录并对其进行编辑

Django管理操作以复制记录并对其进行编辑,django,Django,我知道如何添加操作以复制记录,如下所述: 要编辑添加的记录,必须手动查找并编辑它。 我想知道如何将添加的记录作为此操作的一部分进行编辑,即该操作保存记录并调用此记录的更改视图(保存和编辑)如果有多个添加的记录,我不确定您想做什么。但是,对于单个案例,您可以重定向到管理页面。您需要查看文档中关于显示更多页面的部分: 您需要执行重定向来编辑新创建的对象。再加上复制代码,它看起来像: def duplicate_records(modeladmin, request, queryset):

我知道如何添加操作以复制记录,如下所述: 要编辑添加的记录,必须手动查找并编辑它。
我想知道如何将添加的记录作为此操作的一部分进行编辑,即该操作保存记录并调用此记录的更改视图(保存和编辑)

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

您需要执行重定向来编辑新创建的对象。再加上复制代码,它看起来像:

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

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

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

您需要执行重定向来编辑新创建的对象。再加上复制代码,它看起来像:

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

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

谢谢。它起作用了。我只需要一个物体的情况下,但我会尝试多个情况下也。谢谢。它起作用了。我只需要单个对象的情况,但我也会尝试多个情况。您好user2012749-您能将我的答案标记为正确,以便将此问题标记为已回答吗?Stackoverflow依赖于这种机制,如果没有得到正确的答案并且没有正式承认它,这被认为是不礼貌的。您好,用户2012749-您能将我的答案标记为正确,这样这个问题就标记为已回答吗?Stackoverflow依赖于这种机制,如果没有得到正确的答案,并且没有正式承认,这被认为是不礼貌的。