python测试开发django-53.xadmin里Model分类管理(proxy=True)
前言
django的xadmin后台使用xadmin.site.register注册时,一张表只能注册一次,在后面页面上只能显示出一个页面。
有时候我们想从里面筛选出自己想要的数据,比如有全部的学生成绩,想单独抽出一页显示不及格的学生,这样就可以一个model拆开分成不同的类管理。
models设计表
在原有的Teacher表上,新建一个TeacherMan 继承 Teacher,并在class Meta里面加上一个参数proxy = True,这样就可以用父类建的表,不会新生成表 了。
# models.py
from django.db import models
# 作者:上海-悠悠
# Create your models here.
class Teacher(models.Model):
'''老师表'''
teacher_name = models.CharField(max_length=30, verbose_name="老师", default="")
tel = models.CharField(max_length=30, verbose_name="电话", default="", null=True, blank=False)
mail = models.CharField(max_length=30, verbose_name="邮箱", default="", null=True, blank=False)
gender_choices = (
(u'M', u'男'),
(u'F', u'女'),
)
sex = models.CharField(max_length=10,
choices=gender_choices, # 设置性别选项
verbose_name="性别",
default="", null=True, blank=False)
class Meta:
verbose_name = "老师"
verbose_name_plural = verbose_name
def __str__(self):
return self.teacher_name
# TeacherMan 继承 Teacher
class TeacherMan(Teacher):
'''男老师'''
class Meta:
verbose_name = "男老师"
verbose_name_plural = verbose_name
proxy = True # 不会生成新的表
def __str__(self):
return self.teacher_name
xadmin注册
在原有的基础上新增一个TeacherManAdmin类,继承TeacherAdmin,重写queryset方法,筛选出想要的数据,并通过xadmin.site.register注册
# adminx.py
import xadmin
from .models import Teacher, TeacherMan
# 作者:上海-悠悠
class TeacherAdmin(object):
# 显示的字段
list_display = ["teacher_name", "sex", "tel", "mail"]
# 注册新的表
class TeacherManAdmin(TeacherAdmin):
# 显示的字段
list_display = ["teacher_name", "sex", "tel", "mail"]
def queryset(self):
qs = super(TeacherAdmin, self).queryset()
qs = qs.filter(sex="M") # 筛选 sex="男"
return qs
xadmin.site.register(Teacher, TeacherAdmin)
xadmin.site.register(TeacherMan, TeacherManAdmin)
显示效果
原有的老师信息页面

新增之后的男老师信息页面

python测试开发django-53.xadmin里Model分类管理(proxy=True)的更多相关文章
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- 《Python测试开发技术栈—巴哥职场进化记》—前言
写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- 【python测试开发栈】python基础语法大盘点
周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- python web开发——django学习(一)第一个连接mysql数据库django网站运行成功
1.新建一个项目 2.新建一些文件夹方便管理 3.新建一个项目叫message 4.连接数据库 python web开发Django连接mysql 5.在数据库里自动生成django的表 6.运行 ...
随机推荐
- linux重启服务的脚本命令
最近做网站测试,每次测试完成都要重启服务,为此写了一个简单的shell脚本 linux服务重启shell脚本示例 2014年12月18日 linux服务重启脚本,如何实现linux服务的定时重启,可以 ...
- python各个包的用途
python中的多个包的用途 1.Numpy Numpy提供了两种基本的对象:ndarray和ufunc.ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数. N维数组 ...
- 关于appium-doctor运行时提示不是内部或外部的命令
1.一定要单独配置android_home (我之前是直接将D:\SDK\platform-tools;D:\SDK\tools;加到path里面会导致appnium-doctor运行时失败,原因为A ...
- c#代码文件上传和下载
public JsonResult UploadFile(DriverFileManager filem) { var hfc = Syste ...
- 【转】Linux 虚拟内存和物理内存的理解
http://www.cnblogs.com/dyllove98/archive/2013/06/12/3132940.html 首先,让我们看下虚拟内存: 第一层理解 1. 每个进程 ...
- hexo添加404公益界面
http://hellolb.top/2018/08/16/hexo添加404公益界面/ hexo个人博客添加404公益界面,这里我使用的腾讯404公益界面 我的博客主题是hexo+yilia,其实所 ...
- 001.CDN概述
一 互联网应用质量概述 1.1 互联网应用质量 互联网应用质量指标--QoE,其主要指标: 服务成功率:指用户所请求的服务成功完成的几率. 服务建立时间:指从服务请求到服务呈现所花费的时间,并且会因为 ...
- Django 学习第九天——请求与响应
一.HttpRequest 对象: 服务器接收到http协议的请求后,会根据报文创建 HttpRequest 对象视图函数的第一个参数是HttpRequest 对象再django.http 模块中定义 ...
- JavaScript函数、闭包、原型、面向对象
JavaScript函数.闭包.原型.面向对象 断言 单元测试框架的核心是断言方法,通常叫assert(). 该方法通常接收一个值--需要断言的值,以及一个表示该断言目的的描述. 如果该值执行的结果为 ...
- python数据结构之选择排序
选择排序(select_sort)是一个基础排序,它主要通过查找已给序列中的元素的最大或者最小元素,然后将其放在序列的起始位置或者结束位置,并通过多次这样的循环完成对已知序列的排序,在我们对n个元素进 ...