【发布时间】:2010-12-20 11:27:29
【问题描述】:
我想编写一个 django-admin 操作(当用户选择零行或多行时使用),这将允许他们将所选项目作为一个组进行编辑。我一次只需要编辑模型中的一个项目(“房间”),但我不想遍历所有 480 个对象并逐个手动编辑它们。
有没有办法抛出一个允许用户作为一个组编辑项目的插页式页面?
【问题讨论】:
标签: python django django-admin
我想编写一个 django-admin 操作(当用户选择零行或多行时使用),这将允许他们将所选项目作为一个组进行编辑。我一次只需要编辑模型中的一个项目(“房间”),但我不想遍历所有 480 个对象并逐个手动编辑它们。
有没有办法抛出一个允许用户作为一个组编辑项目的插页式页面?
【问题讨论】:
标签: python django django-admin
您可以创建自定义管理操作,并使用 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。
【讨论】:
这段代码添加了一个 django-admin 操作来做你想做的事情http://code.google.com/p/django-mass-edit/
【讨论】:
在管理员中可能有一些方法可以做到这一点,但为什么不直接创建一个自定义视图来做到这一点呢?
当您开始对管理员进行大量自定义时,这表明您应该开始编写可以轻松修改的自定义应用程序。使用generic views实际上很容易获得管理员的大部分功能。
【讨论】:
您可以使用 pip 下载 django-admin 操作
pip install django-adminactions
这是一个为您提供许多 django-admin 操作的应用程序,例如批量编辑。
在此处查看安装:http://django-adminactions.readthedocs.io/en/latest/install.html
【讨论】: