Django Admin 的“编辑选择”操作?

3 投票
4 回答
2557 浏览
提问于 2025-04-15 16:23

我想写一个django-admin的操作,这个操作可以让用户在选择了零个或多个行的时候,能够把选中的项目一起编辑。我只需要一次编辑模型中的一个项目(“房间”),但我不想一个一个去手动编辑我所有的480个对象。

有没有办法弹出一个中间页面,让用户可以一起编辑这些项目呢?

4 个回答

0

在管理后台可能有一些方法可以做到这一点,但为什么不直接创建一个自定义视图来实现呢?

当你开始对管理后台进行大量自定义时,这就说明你应该考虑写一个自定义应用,这样你可以更方便地进行修改。其实,使用通用视图,你可以很轻松地实现大部分管理后台的功能。

记住,“管理后台并不是你的应用。

1

这段代码给django-admin添加了一个操作,可以实现你想要的功能。你可以在这里找到更多信息:http://code.google.com/p/django-mass-edit/

3

你可以创建自定义的管理员操作,利用JavaScript或者自定义的表单,你可以轻松地创建弹出窗口、警告框,或者你想做的任何事情。例如,我在我某个应用的管理员界面中有这样的设置:

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提示框,获取用户输入,然后把这个输入传递给自定义操作函数,来完成你需要做的事情。

如果想了解更多,可以查看这里的内容:编写Django管理员操作

撰写回答