1、默认情况就像这样 2、找到simpleui的 actions.html自定义按钮,默认点击时需要选择至少一个选项,但是我定义的这两个按钮不需要选择,就是对全部记录进行 *** 作的,所以我们需要重写simpleui的 actions.html。我这里还是比较懒的处理方法——直接在源码修改哈。
3、修改内容这个是我的路径
D:softwarepython3.7.8Libsite-packagessimpleuitemplatesadminactions.html
这里其实只加了一个判断,以 fc_ 开头的按钮就可以直接点击了。所以,我们自定义的按钮需要以 fc_ 开头。代码给你准备好了,直接复制粘贴过去替换原来那一段就行了。
//TODO 需要做国际化 if (data_name.substr(0, 3) == "fc_"){ // 强制运行, 不用选择数据. 按钮名data_name必须以"fc_"开头. done.call(this); } else if (checkbox_checked == 0 && data_name != "add_item" && !_action.customButton[data_name].action_url) { _vue.$alert(getLanuage("Please select at least one option!"), '', { type: 'warning' }) } else if (/confirm/i) { _vue.$/confirm/i(/confirm/i, '提示', { /confirm/iButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => done.call(this)); } else { done.call(this) }4、最后重写 changelist_view 方法就行了
这里我把这部分代码都放上来了。
@admin.register(models.Fakeval) class FakevalAdmin(admin.ModelAdmin): """模拟环境信息""" list_display = ('type_id', 'type_code', 'type_name', 'is_enable', 'min_val', 'max_val', 'interval', 'decimal', 'remarks') list_editable = ('is_enable', 'min_val', 'max_val', 'interval', 'decimal', 'remarks') fields = ('type_id', 'type_code', 'type_name', 'is_enable', 'min_val', 'max_val', 'interval', 'decimal', 'remarks', 'update_user_id', 'update_time') readonly_fields = ['type_id', 'type_code', 'type_name', 'update_user_id', 'update_time'] ordering = ('type_id',) list_filter = ('type_id', 'type_code', 'type_name', 'is_enable') list_per_page = 20 # 增加自定义按钮 actions = ['back_button', 'fc_enable_button', 'fc_disable_button'] def back_button(self, request, queryset): pass def fc_enable_button(self, request, queryset): models.Fakeval.objects.update(is_enable=1) def fc_disable_button(self, request, queryset): models.Fakeval.objects.update(is_enable=0) def changelist_view(self, request, extra_context=None): if 'action' in request.POST and request.POST['action'].startswith('fc_'): if not request.POST.getlist(ACTION_CHECKBOX_NAME): post = request.POST.copy() for u in models.Fakeval.objects.all(): post.update({ACTION_CHECKBOX_NAME: str(u.id)}) request.POST = post return super(FakevalAdmin, self).changelist_view(request, extra_context) # 按钮名称 back_button.short_description = ' 返回数据模拟' fc_enable_button.short_description = ' 全部启用' fc_disable_button.short_description = ' 全部停用' # 按钮图标 back_button.icon = 'fas fa-backward' fc_enable_button.icon = 'fas fa-lock-open' fc_disable_button.icon = 'fas fa-lock' # 按钮颜色 back_button.type = 'info' fc_enable_button.type = 'success' fc_disable_button.type = 'danger' back_button.action_type = 0 back_button.action_url = '/chart/fake/' def has_delete_permission(self, request, obj=None): return False def has_add_permission(self, request): return False def has_change_permission(self, request, obj=None): return True5、鸣谢
感谢【weixin_40960372】这位大神的指导,大家可以参考他的开源项目 bddjango,我就是根据他这个修改成功的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)