我想写一个django-admin动作(当用户选择零行或多行时使用),这将允许他们将所选项目编辑为一个组。我只需要一次编辑模型中的一个项目(“房间”),但我不想要遍历所有480个对象并逐个手动编辑它们。
有没有办法抛出插页式页面,允许用户将这些项目编辑为一个组?
答案 0 :(得分:3)
您可以创建自定义管理操作,使用JavaScript或自定义ModleForms,您可以轻松创建弹出窗口或警报,或任何您想要做的事情。例如,我在我的一个应用程序的管理员中有这个:
admin.py:
def deactivate_selected(modeladmin, request, queryset):
rows_updated = queryset.update(active=0)
for obj in queryset: obj.save()
if rows_updated == 1:
message_bit = '1 item was'
else:
message_bit = '%s items were' % rows_updated
modeladmin.message_user(request, '%s successfully deactivated.' % message_bit)
deactivate_selected.short_description = "Deactivate selected items"
## add deactivates
admin.site.add_action(deactivate_selected)
这会在管理页面中添加“拒绝所选项目”选项。
在我看来,为“选择项目的更新空间”进行自定义操作会很容易,这会提供JavaScript提示,获取该输入,并将其提供给自定义操作功能以执行您需要的操作做。
此处可以找到更多阅读材料:Writing Django Admin Actions。
答案 1 :(得分:0)
此代码添加了一个django-admin操作来执行您想要的操作http://code.google.com/p/django-mass-edit/
答案 2 :(得分:0)
您可以使用pip下载django-admin操作
pip install django-adminactions
这是一款为您提供许多django-admin操作的应用,例如群发编辑。
请在此处查看安装:docs
答案 3 :(得分:-1)
有可能在管理员中执行此操作,但为什么不创建自定义视图来执行此操作?
当您开始对管理员进行大量自定义时,它表示您应该开始编写可以轻松修改的自定义应用程序。实际上很容易使用generic views获得管理员的大部分功能。