DjangoAdmin不选中选项使用Action方案

我们平常使用Action时需要先选中才能响应我们点击的Action操作,如果想不选中即可响应Action操作,需要用另外的办法

@admin.register(caisheng_model.MemberOfChainInfo)
class MemberOfChainInfoAdmin(BaseModelAdmin):
    list_display = BaseSelfResponse.model_to_list_display(caisheng_model.MemberOfChainInfo)
    actions = ['at_once_task', ]

    def at_once_task(self, request, queryset):
        return True
    # 按钮的配置
    at_once_task.short_description = '立刻同步会员信息'
    at_once_task.type = 'danger'
    at_once_task.style = 'color:rainbow;'

    def changelist_view(self, request, extra_context=None):
        if 'action' in request.POST and request.POST['action'] == 'at_once_task':
            BaseSelfResponse.thread_it(get_all_chain_member_info)
        return super().changelist_view(request, extra_context)

重写changelist_view操作,可以无选中即可响应操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在Django admin使用自定义Action来实现将选中行数据传递到视图(view)中。 首先,在你的app中创建一个自定义Action,比如: ```python from django.contrib import admin from django.urls import reverse from django.http import HttpResponseRedirect class CustomAction(admin.ModelAdmin): actions = ['custom_action'] def custom_action(self, request, queryset): ids = ','.join(str(q.id) for q in queryset) url = reverse('myapp:myview', args=[ids]) return HttpResponseRedirect(url) custom_action.short_description = "Custom Action" ``` 在自定义Action中,我们使用Django的reverse函数来获取视图的URL,并将选中行的ID作为参数传递给视图。 接下来,在你的app的urls.py中添加视图的URL,比如: ```python from django.urls import path from .views import MyView app_name = 'myapp' urlpatterns = [ path('myview/<str:ids>/', MyView.as_view(), name='myview'), ] ``` 在这个视图中,我们可以通过获取URL参数来获取选中行数据的ID列表,比如: ```python from django.views.generic import View from django.shortcuts import render class MyView(View): def get(self, request, ids): id_list = ids.split(',') queryset = MyModel.objects.filter(id__in=id_list) context = {'queryset': queryset} return render(request, 'my_template.html', context) ``` 在这个视图中,我们通过使用split函数将ID列表字符串分割成一个ID列表,并使用filter函数从数据库中获取选中行的数据。最后,我们将数据传递给一个自定义的模板(my_template.html)进行处理。 最后,在你的ModelAdmin中注册自定义Action,比如: ```python from .models import MyModel @admin.register(MyModel) class MyModelAdmin(CustomAction): list_display = ['id', 'name'] ``` 现在,当你在Django admin选中行并点击自定义Action时,它将把选中行数据的ID列表作为参数传递给视图,并显示视图处理后的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值