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

时间:2010-10-21 16:49:42

标签: 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"

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

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:0)

也许这适合你。

def duplicate_query_sets(queryset, **kwargs):
    for p in queryset:
        p.pk = None
        for i, v in kwargs.iteritems():
            setattr(p, i, v)

        p.save()