只是想知道是否有一种简单的方法来添加复制管理界面中现有列表的功能?

在数据输入中,我们遇到了许多项目与另一项共享通用数据的情况,为了节省时间,快速复制现有列表并仅更改已更改的数据将非常好。使用更好的模型结构将是减少数据重复的一种方法,但可能会出现重复数据需要在未来单独更改的情况。

有帮助吗?

解决方案

您可以另存为只需将其添加到您的ModelAdmin:

save_as = True

这取代了“保存并添加另一个”。带有“另存为”的按钮按钮。 “另存为”表示对象将保存为新对象(使用新ID),而不是旧对象。

其他提示

这里有一个更好(但不是内置)的解决方案:

https://github.com/RealGeeks/django-modelclone

来自他们的自述文件:

  

Django Admin有一个 save_as 功能,可以为您添加一个新按钮   更改页面以保存该对象的新实例。

     

我不喜欢这个功能的工作方式,因为你会保存一个   原始对象的相同副本(如果您没有得到验证   一旦你点击该链接,你就忘记了   您想要在新对象中进行的小改动最终会得到一个   现有对象的副本。

     

另一方面,django-modelclone提供了一个中间视图   基本上预先填写表格给你。所以你可以修改然后保存   一个新的实例。或者只是没有副作用就离开了。

您也可以应用此方法: https://stackoverflow.com/a/4054256/7995920

在我的情况下,在'name'字段中使用唯一约束,此操作有效,可以从任何表单请求:


def duplicate_jorn(modeladmin, request, queryset):
    post_url = request.META['HTTP_REFERER']

    for object in queryset:
        object.id = None
        object.name = object.name+'-b'
        object.save()

    return HttpResponseRedirect(post_url)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top