当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Django管理界面中,有没有办法复制项目?》经验,为你挑选了2个好方法。

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

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



1> Harley Holco..:

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

save_as = True

这将使用"另存为"按钮替换"保存并添加另一个"按钮."另存为"表示对象将保存为新对象(具有新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> kontextify..:

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

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

从他们的自述文件中:

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

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

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

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有