首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python测试开发django-53.xadmin里Model分类管理(proxy=True)

python测试开发django-53.xadmin里Model分类管理(proxy=True)

作者头像
上海-悠悠
发布2019-05-06 15:03:50
3560
发布2019-05-06 15:03:50
举报

前言

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 qsxadmin.site.register(Teacher, TeacherAdmin)
xadmin.site.register(TeacherMan, TeacherManAdmin)

显示效果

原有的老师信息页面

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • models设计表
  • xadmin注册
  • 显示效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档