我想创建一个允许我创建记录副本的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"
我知道这不对......但是我的想法很接近吗?
答案 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()