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.运行 ...
随机推荐
- dedecms首页入口的详细注释
今天闲来无事,就拿来dede首页的文件给大家详细解释一遍,以便于新手学习,注释过程非常非常非常的详细,里面解释到dede表前缀#@__代替的原理.解释到dede很多自定义函数的具体位置和具体作用等等疑 ...
- python全栈开发day87~91-整个流程梳理、CRM功能、知识点梳理
1.流程 1. stark组件 1. 启动 2.注册 3.url设计 4.视图函数设计 1.展示数据头 2.展示数据 3.list_display功能实现 4.list_display_links 功 ...
- ArcObjects 中连接geodatabase
参考资料: 1. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/d/0001000003s8 ...
- Fatal NI connect error 6413的解决办法 http://www.itpub.net/thread-107518-1-1.html
在进行Oracle开发的时候,碰到了这样一个稀奇古怪的问题:每次连接数据库都不成功,并且在应用程序目录下的sqlnet.log中有这样的记录: Fatal NI connect error 6413, ...
- ajax请求后台,response.sendRedirect失效,无法重定向
今天在写项目的时候,想加一个切换用户,需要清除session并且跳转到登录页面,发起一个ajax请求后,执行完发现无法跳转. 原因在于: (从网上摘录) Ajax只是利用脚本访问对应url获取数据而已 ...
- day46 html
老师的笔记: day46 课程安排 HTML CSS JS基础 DOM操作 jQuery Bootstrap pymysql Django基础 项目实战 Vue.js 今日概要: "PUT ...
- 在 Wiki 标记中添加无序列表
项目:在 Wiki 标记中添加无序列表在编辑一篇维基百科的文章时,你可以创建一个无序列表,即让每个列表项占据一行,并在前面放置一个星号.但是假设你有一个非常大的列表,希望添加前面的星号.你可以在每一行 ...
- Hdu-2016解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016 题目解析:输入n个数据,找出n个数据中最小的数据,将它与第一个数据进行交换.(这里可得看清题意, ...
- 004.Heartbeat+HAProxy+MySQL半复制高可用架构
一 基础环境 节点 系统版本 MySQL版本 业务IP 心跳IP Master CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Slave Cen ...
- CUDA版Grabcut的实现
在上次用 CUDA实现导向滤波 后,想着导向滤波能以很小的mask还原高分辨率下的边缘,能不能搞点事情出来,当时正好在研究Darknet框架,然后又看到grabcut算法,用opencv试了下,感觉效 ...