Django框架自定义模型管理器与元选项用法分析

  

本文实例讲述了Django框架自定义模型管理器与元选项用法。分享给大家供大家参考,具体如下:

  

  

每个模型类默认都有一个对象类属性,可以把它叫模型管理器。它由django自动生成,类型为

        django.db.models.manager.Manager   之前      

可以在模型类中自定义模型管理器,自定义后,Django将不再生成默认的对象。(模型类可以自定义多个管理器)

  

例如:         类部门(models.Model):   #自定义模型管理器   经理=models.Manager ()      之前      

调用部门。对象会抛出AttributeError异常,而Department.manager.all()会返回一个包含所有部门对象的列表。

  

<强>两种情况需要自定义管理器

  

修改管理器返回的原始查询集

  

需求:调用<代码> Department.manager.all() 返回的是2009年之后成立的部门

  

管理器类中添加额外的方法,帮我们操作模型类对应的数据表

  

需求:在管理器类中,定义一个创建部门的方法

  

<强>一、自定义模型管理器

        类DepartmentManager(经理):   #修改管理器返回的原始查询集   def(自我):   ”“重写所有方法:只返回2009年之后成立的部门”“   返回super () () .filter (create_date__gte=日期(2009年,1,1))   #在模型管理器中封装增删查的方法   def create_dep(自我、名称、create_date):   ”““新增一个部门”“   部=部门()   dep.name=名字   dep.create_date=create_date   dep.save ()   返回dep #返回新增后的员工对象      之前      

<强>二,在模型类中使用自定义的模型管理器

        类部门(models.Model):   ”“”部门类”“”   …   #自定义模型管理器(默认的对象就不会再生成)   对象=DepartmentManager ()      之前      

<强>三,在视图函数中,使用自定义的模型管理器中的方法

        def add_dep(请求):   ”““新增部门”“”   # d=部门()   # d.name='财务部”   # d。create_date=日期(2018年,1,1)   # d.save ()   #调用自定义的模型管理器,新增一个部门   Department.objects。create_dep(“财务部”,日期(2018年,1,1))   #返回的不再是所有的部门,而是2009年之后成立的部门   # Department.objects.all ()   返回重定向('/show_deps ')      之前      

  

<强>一、修改表名:

  

Django默认生成的表名:

  

应用名小写_模型类名小写
  可以通过在模型类中定义元类来修改表名:

        类部门(models.Model):   ”“”部门类”“”   name=models.CharField (max_length=20)   类元(对象):   “”指定表名”“”   db_table="部门"      之前      

重新生成迁移文件,并迁移生成表,查看表名是否有修改

  

<强>二、修改模型类在管理后台的显示名称

  

 Django框架自定义模型管理器与元选项用法分析

        类元:   #定义表名   db_table=安棵拧?   #定义在管理后台显示的名称   verbose_name='部门”   #指定复数时的名称(去除复数的年代)   verbose_name_plural=verbose_name      之前      

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Django框架自定义模型管理器与元选项用法分析