Django 之ModelAdmin对象(补)

一、后台管理系统配置


1 在该表对应的models类里面添加一个Meta类

class Meta:
    verbose_name_plural = '用户表' ### 指定该表在admin后台的名字为: 用户表
    # verbose_name = '用户表'      ### 末尾还是会自动加s

 

2 null=True,blank=True的区别

### null=True:  是告诉数据库该字段可以为空,admin后台默认还是不允许为空
### blank=True: admin 后台该字段可以为空
phone = models.CharField(max_length = 11, blank = True, null = True, unique = True, verbose_name = "手机号")

 

3 settings.py配置,使django的后台管理页面变成中文、设置时区

### Internationalization
### https://docs.djangoproject.com/en/3.2/topics/i18n/

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False

 

二、ModelAdmin 的常用属性


1 注册表

admin.py中只需要 Mode 中的某个类注册,即可在 Admin 中实现增删改查的功能。

from django.contrib import admin
from app import models
# Register your models here.

admin.site.register(models.UserInfo)
admin.site.register(models.Blog)

注册完后点击表名即可修改表内容。

2 list_display 字段展示

  • list_display:列表时,定制显示的列。
  • 在默认的情况下,Model 在 admin 列表修改页(Admin ChangeList)只会显示一列,内容是实例对象的__str__的返回值,如果想要多现实一些列的数据,就可以通过 list_display 属性来实现。
  • 它除了可以配置 Model 的字段名之外,还可以接收函数,且这个函数将一个 Model 实例对象作为参数,这个函数也需定义在 ModeAdmin 中。语法格式如下:list_display=[]
  • 在使用 list_display 时需要特别注意它的两个特性
  • 对于 Foreignkey 类型的字段,显示的是 obj.__str__() 返回的值。
  • 不支持 ManyToManyField 类型的字段,如果需要展示,可以用自定义方法实现。
### 方式一
class UserInfoAdmin(admin.ModelAdmin):
    list_display = ('username', 'email',)
admin.site.register(models.UserInfo, UserInfoAdmin)

### 方式二
@admin.register(models.UserInfo)                    
class UserInfoAdmin(admin.ModelAdmin):
    list_display = ('username', 'email',)

 

3 list_display_links 链接至列表页面,可以点击跳转。

  • 使用 list_display_links 可以控制 list_display 中的字段是否应该链接到对象的“更改”页面。默认情况下,更改列表页面会只将第一列链接到每个项目的更改页面。它的使用格式和 list_display 相同,是列表或者元组类型。

  • 同时它也可以指定一个或多个字段。只要这些字段在中 list_display 中存在 ,那么 Django 就不会在意链接了多少个字段。

注意:要使用 list_display_links 这个属性 ,必须先要定义 list_display。

4 list_filter 过滤器

  • 配置 list_filter 属性,可以在 Admin 后台的列表修改页的右侧添加过滤器,且各个过滤条件是 and 的关系。
  • list_filter 是列表或者元组类型,通常使用它会传递两类元素:一个是 Model 的字段名,另一个是继承自以下的类(并不常用):django.contrib.admin.SimpleListFilter
  • 对于 Model 的字段名,字段类型必须属于 BooleanField、CharField、DateField、DateTimeField、IntegerField、ForeignKey 或 ManyToManyField 中的一种。
  • 同样也可以使用双下画线实现跨表关联。示例如下所示:list_filter= ['title', 'pub__pubname']

5  list_editable 设置字段名称

  • 允许模型的字段在列表页面上被编辑,也就是说,它包含的字段将在 list_editable 更改页面上显示为表单窗口小部件,从而允许用户一次编辑和保存多行。

使用 list_editable 时,你应该注意以下规则: 

  • list_editable 列表中的每个字段也必须位于 list_display 中。否则你将无法编辑;
  • 同一字段不能同时在 list_editable 和 list_display_links 中显示,因为同一字段只能属于它们两者中的一个。

6 search_fileds 添加搜索框

  • 在一些场景下给某些字段添加搜索框是很有意义的,Django 考虑到这一点提供了 search_fileds 属性,在 Admin 中表现为一个搜索框,查询的字段可以是 CharField 或TextField 类型的。
  • 也可以是对 ForeignKey 或 ManyToManyField 字段类型的引用查询,使用双下画线引用字段名。使用示例如下:search_fields = ['blog__site_name']
  • 对于搜索框中的输入词,Django 会将其分割成多个关键字,并返回所有包含这些关键字的实例对象。

提示:需要注意的是,每个关键字都必须是 search_fields 选项中的至少一个。

 

7 ordering

  • 列表时,数据排序规则
8 list_per_page
  • 列表分页,显示
9 date_hierarchy
  • 按时间分层 根据时间筛选表格
10 empty_value_display
  • 列数据为空时,显示默认值
### 数据库模型在: https://www.cnblogs.com/huaxiayuyi/p/16754258.html
class UserInfoAdmin(admin.ModelAdmin):
    ### 排序
    ### ordering = ('nid',)
    ### 倒序
    ordering = ('-nid',) 
    ### 显示的字段
    list_display = ('nid', 'email', 'create_time', 'phone', 'blog')
    ### 点击可跳转
    list_display_links = ( 'create_time',)
    ### 过滤器
    list_filter = ('email', 'phone', 'blog__site_name')
    ### 可编辑
    list_editable = ('email', )
    ### 搜索框
    search_fields = ['email', 'phone', 'blog__site_name']
    ### 时间分层
    date_hierarchy = 'create_time'
    ### 分页
    list_per_page = 3
    ### 为空时,显示默认值
    empty_value_display = '-empty-'
    ### 是否显示选择个数
    actions_selection_counter = True
    ### Action选项都是在页面上方显示
    actions_on_top = False
    ### Action选项都是在页面下方显示
    actions_on_bottom = True
    
admin.site.register(models.UserInfo, UserInfoAdmin)
admin.site.register(models.Blog)

Django 之ModelAdmin对象(补)

 

 

(补)

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django 之ModelAdmin对象(补) - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Django 测试脚本

    一、测试脚本 Django 在创建项目时自动在应用下创建了tests.py,这个py文件可以作为测试文件;也可以在应用下手动创建一个py测试文件。 无论哪种方式,都需要提前书写以下代码。 from django.test import TestCase # Create your tests here. import os “””Run administra…

    2023年4月2日
    00
  • Django django-admin.py 命令详解

    一、Django 基本命令 下载 Django pip3 install django     # 默认下载最新版 pip3 install django==4.1  # 手动选择版本   创建Django 项目 格式:django-admin startproject 项目名 django-admin startproject mysite   创建APP…

    2023年4月2日
    00
  • Python Web开发主流框架

    Web 开发是Python 语言应用领域的重要部分,也是工作岗位最多的领域。如果你对基于Python的Web 开发有兴趣,正打算使用Python 做Web 开发,或者已经是一个Web 开发者有工作需要,要做自动化运维、数据的图形化展示等,那么学习一门基于Python的Web 开发框架是必修课。 Python作为当前最火爆最热门,也是最主要的Web 开发语言之…

    2023年4月2日
    00
  • Django request对象

    request对象       request.method         # 获取当前的请求方式,并且返回的是全大写的字符串 print(request.POST.get(‘hobby’))   # 只能接收最后一个 print(request.POST.getlist(‘hobby’))  # 接收多个 request.GET.get(‘name’) …

    Python开发 2023年4月2日
    00
  • Django 聚合分组F与Q查询及choices

    一、聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数)) 查询结果:使用聚合函数,从每一个组中获取结果:字典 注意点: 1 聚合函数必须在分组之后才能使用 2 没有分组,即默认整体就是一组 3 查询结果为 普通字…

    Python开发 2023年4月2日
    00
  • Django 之Auth模块

    一、Auth 模块是什么 Auth 模块是Django中自带的用户认证模块。 一个网站系统需要实现用户注册、用户登录、用户认证、注销、修改密码等功能,Django中内置了强大的认证系统-auth,默认使用 auth_user 表来存储用户的数据。 同时Django有一个后台管理系统(127.0.0.1:8000/admin),使用的用户名和密码也是这张数据表…

    2023年4月2日
    00
  • Django 使用cmd 创建工程

    一、Django 安装 1 通过pip安装 Django 如果你是通过升级的方式安装Django,那么你需要先卸载旧的版本。 Django 提供3种发行版本,推荐使用官方的稳定版本: 你的操作系统提供的发行版本(Linux) 官方稳定版本(推荐) 开发测试版本 Django 本质上是Python 语言的一个类库,因此可以通过pip 工具安装。这也是最简便、最…

    2023年4月2日
    00
  • Django ORM 实现数据的单表 增删改查

    一、配置环境 1 Django 连接数据库(MySQL) DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.mysql’, ‘NAME’: ‘xyz’, ‘USER’:’root’, ‘PASSWORD’:’root’, ‘HOST’:’IP地址’, ‘PORT’:3306, ‘CHARSET’…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部