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)

顯示效果

原有的老師信息頁面

新增之后的男老師信息頁面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM