列表页选项

页大小

  • 指定每页中显示多少条数据,默认为每页显示100条数据

      list_per_page = 100
    
      class AreaAdmin(admin.ModelAdmin):
          # 页大小,指定每页显示10条数据
          list_per_page = 10
    
  • 浏览效果

操作选项Action的位置

  • 默认在管理页面的顶部有一个,管理页面底部没有

      actions_on_top = True
      actions_on_bottom = False
    
      class AreaAdmin(admin.ModelAdmin):
          # 在管理页面底部新加一个Action
          actions_on_bottom = True
    
  • 浏览效果

列表中的列

  • 指定在模型列表中显示哪些字段作为列

      list_display=[字段1, 字段2, ...]
    
      class AreaAdmin(admin.ModelAdmin):
          # 指定字段作为列
          list_display = ['id', 'name', 'parent']
    
  • 浏览效果

    • 点击列头可以进行升序或降序排列

模型方法作为列

  • 模型方法和模型字段都指定为列显示在管理界面上

    • 模型方法作为列无法直接点击列头排序,如果需要排序需要为方法指定排序依据

      # 定义AreaInfo模型方法作为列
      def title(self):
        return self.name
      
      list_display = ['id', 'name', 'parent', 'title']
      
  • 浏览效果

  • 方法作为列排序:指定方法作为列的排序依据

      # 定义模型方法作为列
      def title(self):
          return self.name
      # 指定方法作为列的排序依据
      title.admin_order_field = 'name'
    

列标题

  • 列标题默认为属性或方法的名称,可以通过属性设置为其他名称
  • 列标题的设置方式

    • 1.short_description属性设置
    • 2.verbose_name属性设置
  • short_description属性设置

    • 需要先将模型字段封装成方法,再对方法使用这个属性,模型字段不能直接使用short_description属性

      方法名.short_description = '列标题'
      
      # 定义模型方法作为列
      def title(self):
        return self.name
      # 指定方法作为列的排序依据
      title.admin_order_field = 'name'
      # 修改模型title方法作为列的标题名称
      title.short_description = '区域名称'
      
  • verbose_name属性设置

    • 定义模型字段时指定该属性的值

      # 地区列表信息
      class AreaInfo(models.Model):
        name = models.CharField(verbose_name='地区标题', max_length=30) #名称
        parent = models.ForeignKey('self',null=True,blank=True) #关系
      
        # 元类信息 :修改表名
        class Meta:
            db_table = 'areainfo'
      
  • 浏览效果

右侧栏过滤器

  • 只能接收字段,会将对应字段的值列出来,用于快速过滤,一般用于有重复值的字段

      list_filter = ['字段1', '字段2', ...]
    
      class AreaAdmin(admin.ModelAdmin):
          # 右侧栏过滤器
          list_filter = ['name']
    
  • 浏览效果

搜索框

  • 用于对指定字段的值进行搜索,支持模糊查询

      search_fields = ['字段1', '字段2', ...]
    
      class AreaAdmin(admin.ModelAdmin):
          # 搜索框
          search_fields = ['name']
    
  • 浏览效果