标题:django管理员动作 | 作者: catfish | 时间:2020年01月14日
暂无法显示图片

基本用法

使用如下:

from django.contrib import admin
from myapp.models import Article

def make_published(self, request, queryset):
    rows_updated = queryset.update(status='p')
    if rows_updated == 1:
        message_bit = "1 story was"
    else:
        message_bit = "%s stories were" % rows_updated
    self.message_user(request, "%s successfully marked as published." % message_bit)     # 发送消息提示

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'status']
    ordering = ['title']
    actions = [make_published]    # 使用管理员动作

admin.site.register(Article, ArticleAdmin)

编辑动作之后重定向的界面

返回一个response对象,提供操作后重定向的界面。

全员动作

admin.site.add_action(export_selected_objects, ‘这里是备注’)

禁止默认的删除操作

删除内置的删除所选对象的操作
admin.site.disable_action(‘delete_selected’)

禁止所有动作

actions = None

自定义启用或禁止操作

class MyModelAdmin(admin.ModelAdmin):
    ...

    def get_actions(self, request):
        actions = super().get_actions(request)
        if request.user.username[0].upper() != 'J':
            if 'delete_selected' in actions:
                del actions['delete_selected']
        return actions

设置操作权限

相关操作权限有:add, change, delete, view

def make_published(modeladmin, request, queryset):
    queryset.update(status='p')
make_published.allowed_permissions = ('change',)

 

我要评论

没有登录?请先登录后再评论

最新评论

暂无人评论,来抢个沙发吧!