创建Django管理操作以复制记录

Dav*_*win 4 django django-admin

我想创建一个允许我创建记录副本的Django Admin Action.

继承人的用例.

管理员单击要复制的应用中记录旁边的复选框.管理员从管理操作下拉菜单中选择"重复".管理员点击进入.Django admin使用新的id创建重复记录.页面被刷新,新的重复与id一起添加.管理员点击新的重复记录并对其进行编辑.管理员点击保存.

我疯了还是这是一个非常直接的管理行动?

我一直在使用这些文档作为参考:http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

我在想这样的事情:

在我的应用程序:

def duplicate(modeladmin, request, queryset):
    new = obj.id
    queryset.create(new)
    return None
duplicate.short_description = "Duplicate selected record"
Run Code Online (Sandbox Code Playgroud)

我知道那不对......但是我的想法很接近吗?

小智 12

您有正确的想法,但您需要遍历查询集然后复制每个对象.

def duplicate_event(modeladmin, request, queryset):
    for object in queryset:
        object.id = None
        object.save()
duplicate_event.short_description = "Duplicate selected record"
Run Code Online (Sandbox Code Playgroud)

  • 现在的诀窍是,如何复制任何指向此模型的FK模型. (2认同)
  • 请记住还要将重复操作添加到应用程序 Myapp 的 MyappAdmin 类中的操作列表中: actions = [duplicate_event] (2认同)