只是想知道是否有一种简单的方法来添加功能以复制管理界面中的现有清单?
在数据输入中,我们遇到了很多项目与另一个项目共享通用数据的情况,并且为了节省时间,快速复制现有清单并仅更改更改的数据将非常好。使用更好的模型结构将是减少数据重复的一种方法,但是将来可能会出现需要重复更改重复数据的情况。
Answers:
这里有一个更好的(但不是内置的)解决方案:
https://github.com/RealGeeks/django-modelclone
从他们的自述文件中:
Django Admin的
save_as
功能是在“更改”页面上添加新按钮,以保存该对象的新实例。我不喜欢此功能的工作方式,因为单击该链接后,如果忘记进行一些小的更改,您将保存原始对象的相同副本(如果未收到验证错误)。在新对象中需要时,您将得到现有对象的副本。
另一方面,django-modelclone提供了一个中间视图,该视图基本上为您预填充了表单。因此,您可以修改然后保存新实例。或者只是走开而没有副作用。
您也可以应用此方法:https : //stackoverflow.com/a/4054256/7995920
就我而言,在“名称”字段中具有唯一性约束的情况下,此操作有效,并且可以通过任何形式进行请求:
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)
admin.site.register(Person, PersonAdmin)
(如果PersonAdmin是您的派生类)而不是使用admin.site.register(Person)