Django——admin

1.重写list_filter

在admin进行模型管理时,通常会使用list_filter,来对我们的字段进行过滤,但是很多时候我们需要字定义格式,

@admin.register(Modela) #注册模型类Modela
class ModelaAdmin(admin.ModelAdmin):
 
    list_display = ()
    search_fields = ()
    
    class GenderFilter(admin.SimpleListFilter):
        title = '英雄性别' #过滤标题显示为"以 英雄性别"
        parameter_name = 'gender' #过滤器使用的过滤字段
    
        def lookups(self, request, model_admin):
            '''针对字段值设置过滤器的显示效果'''
            return (
                (True, 女),
                (False, 男),
            )
        
        def queryset(self, request, queryset):
            '''定义过滤器的过滤动作'''
             if self.value() == True:
                return self.model().objects.filter(gender=True).all()
             elif self.value() == False:
               return self.model().objects.filter(gender=False).all()
            
     def get_queryset(self, request):
        # 刚进去此界面时,获取到的过滤值为空,
        name = request.GET.get('name', None)
        if not station_name:
            res = Stations.objects.all()[0]
            return Model.objects.all().using(res.name_en)
        return Model.objects.all().using(station_name)
    
    list_filter = (GenderFilter)
    # 自定义顾虑条件
    class PowerHealthFilter(admin.SimpleListFilter):
        title = "站名" 
        parameter_name = "station_id"  # 筛选字段

        def lookups(self, request, model_admin):
            display = {}
            for item in PowerHealth.objects.all():
                try:
                    station_name = 
            Stations.objects.get(station_id=item.station_id).name_zh
                    display[item.station_id] = (item.station_id, station_name)
                except:
                    pass
            return display.values()  # 这里自定义筛选的内容,前者为值,后者为展示

        def queryset(self, request, queryset):
            # 根据过滤的条件查询
            if self.value():
                return PowerHealth.objects.filter(station_id=self.value())
            else:
                return PowerHealth.objects.all()

2. 自定义 list_display 字段

也可以通过 from django.utils.safestring import mark_safe 定制化css格式

from django.utils.safestring import mark_safe

指定名称:

fault_info.short_description = 'xxxx'

3. 在admin后台详情页面点击查看某行记录的详情信息:调用的接口为 

get_object

 

自定义事件

## admin
    actions = ["mark_immortal"]

   # 自定义事件
    def mark_immortal(self, request, queryset):
        prk_str = ""
        if queryset:
            for obj in queryset:
                prk_str += str(obj.id)
        return HttpResponseRedirect("/feature/rule/%s" % prk_str)

    mark_immortal.short_description = "故障编辑"

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值