• Django管理器和元选项


    一、管理器:

    应用场景:1.改变查询的结果集  2.添加额外的方法

     1 class BookInfoManger(models.Manager):
     2     """自定义图示模型管理类"""
     3     # 改变查询的结果集
     4     def all(self):
     5         # 1.调用父类的all方法,获取所有数据
     6         books = super().all()  # QuerySet
     7         # 2.对数据进行过滤
     8         books = books.filter(isDelete=False)
     9         # 3.返回数据
    10         return books
    11 
    12     # 封装函数,操作模型类对应的数据表(增删改查)
    13     def create_book(self, btitle, bpub_date):
    14         # 创建一个图书对象
    15         # book = BookInfo()
    16         model_class = self.model
    17         book = model_class()
    18         book.btitle = btitle
    19         book.bpub_date = bpub_date
    20         # 保存数据
    21         book.save()
    22         # 返回book
    23         return book
    24 
    25 
    26 class BookInfo(models.Model):
    27     """图书模型类"""
    28     # 图书名称
    29     btitle = models.CharField(max_length=20)
    30     # 出版日期
    31     bpub_date = models.DateField()
    32     # 阅读量
    33     bread = models.IntegerField(default=0)
    34     # 评论量
    35     bcomment = models.IntegerField(default=0)
    36     # 逻辑删除标记
    37     isDelete = models.BooleanField(default=False)
    38     # 自定义一个Manger类对象
    39     objects = BookInfoManger()

    二、元选项:

    应用场景:工作中表已经创建好,需要创建模型类来对应表或者需要修改项目APP名称,通过定义元类指定表名,可以让表名脱离app名称限制。

    定义好后重新生成迁移文件并执行迁移,表名就会更改。
    定义方法(在模型类中):
    class BookInfo(models.Model):
        """图书模型类"""
        。。。。。。
    
        class Meta:
            # 创建元类,指定表名,让表名脱离app名称限制
            db_table = 'bookinfo'
  • 相关阅读:
    hdu 1175
    hdu 2197
    STL的学习
    数据结构之线性结构栈
    Linux下Fork与Exec使用
    散列技术之哈希
    检索之二分检索
    检索之顺序检索
    程序员该怎样放松?8个好网站推荐
    外部碎片和内部碎片的区别
  • 原文地址:https://www.cnblogs.com/zzmx0/p/12815536.html
Copyright © 2020-2023  润新知