在Django管理界面中,有没有办法复制项目?

ses*_*esh 65 python django django-models django-admin

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

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

Har*_*mbe 105

您只需启用将其添加到ModelAdmin 即可保存:

save_as = True
Run Code Online (Sandbox Code Playgroud)

这将使用"另存为"按钮替换"保存并添加另一个"按钮."另存为"表示对象将保存为新对象(具有新ID),而不是旧对象.

  • 实现这一点对我来说并不明显,我发现[另一个问题的部分名为'Sample admin.py'](http://stackoverflow.com/questions/18577324/django-save-as-new-and-keep-image -fields)表明你需要从ModelAdmin派生,然后使用`admin.site.register(Person,PersonAdmin)`(如果PersonAdmin是你的派生类)而不是使用`admin.site.register(Person)` (2认同)

kon*_*ify 5

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

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

从他们的自述文件中:

Django Admin的save_as功能是在“更改”页面上添加新按钮,以保存该对象的新实例。

我不喜欢此功能的工作方式,因为单击该链接后,如果忘记进行一些小的更改,您将保存原始对象的相同副本(如果未收到验证错误)。在新对象中需要时,您将得到现有对象的副本。

另一方面,django-modelclone提供了一个中间视图,该视图基本上为您预填充了表单。因此,您可以修改然后保存新实例。或者只是走开而没有副作用。