我知道如何添加动作来复制记录,如下面的解释: Create a Django Admin Action to Duplicate a Record 要编辑添加的记录,必须手动查找和编辑它。 我想知道我们如何编辑添加的记录作为此操作的一部分,即。该操作会保存记录并调用此记录的更改视图(保存并编辑)
答案 0 :(得分:3)
如果有多个添加的记录,我不确定你想要做什么。但是,对于单个案例,您可以只重定向到管理页面。您需要查看文档中有关显示更多页面的部分:
您需要重定向才能编辑新创建的对象。结合复制代码,它看起来像:
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))
此代码未经测试,您需要一些导入,但它应该有效。对于多个对象的情况,它应该重定向到只显示已创建对象的更改列表页面。