Kj。 2023-05-31 17:27 采纳率: 0%
浏览 10

DjangoAdmin不选中选项使用Action方案

DjangoAdmin不选中选项使用Action方案

img


如何设置不用选中选项,就可以执行函数啊,查了一下资料,修改了changelist_view还是不行

class CheckAdmin(admin.ModelAdmin):
    list_display=('Cnumber','Mnumber','C_date','Now_inventory','Actual_num','out_num','in_num')

    # def has_add_permission(self, request: HttpRequest) -> bool:
    #     return False
    actions = ['draw_prize']

    def draw_prize(self, request, queryset):
        pass
        
 
    draw_prize.short_description = '开始抽奖'
    draw_prize.type = 'warning'
    draw_prize.confirm = '确认即开始抽奖并发送中奖通知~'
    draw_prize.acts_on_all = True

    def changelist_view(self, request, extra_context=None):
        if 'action' in request.POST and request.POST['action'] == 'draw_prize':
            if not request.POST.getlist(ACTION_CHECKBOX_NAME):
                post = request.POST.copy()
                for u in Check_sheet.objects.all():
                    post.update({ACTION_CHECKBOX_NAME: str(u.Cnumber)})
                request._set_post(post)
        return super(CheckAdmin, self).changelist_view(request, extra_context)

  • 写回答

1条回答 默认 最新

  • 于扶摇 2023-06-02 00:20
    关注

    在admin.py中定义一个ModelAdmin子类,并重写changelist_view方法。
    在changelist_view方法中,检查请求POST参数中是否存在action字段,以及action字段的值是否为draw_prize。
    如果存在action字段且值为draw_prize,则对所有对象添加选中标志,然后调用super()方法执行操作。
    定义一个名为draw_prize的Action函数,该函数将在所有选定的对象上执行。
    在list_display中添加Cnumber字段,以便在列表中显示该字段。
    将draw_prize函数添加到actions列表中,并设置其属性,例如short_description、type、confirm和acts_on_all。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?
  • ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件