管理器 Manager

管理器是 Django 的模型进行数据库的查询操作的接口 ,用于与数据库进行交互,Django 应用的每个模型都拥有至少一个管理器

当定义模型类时没有指定管理器,则 Django 会为模型类提供一个名为 objects 的管理器

显式定义管理器

自定义管理器类主要用于两种情况

情况一:向管理器类中添加额外的方法:

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField()

    # 装饰器类方法
    # 重写类的创建方法
    @classmethod
    def create(cls,title,pub_date):
        book = cls(btitle=title,bpub_date=pub_date)
        return book

    def __str__(self):
        return "%d--%s--%s" % (self.pk, self.btitle, self.bpub_date)

    # 改变排序顺序
    class Meta():
        ordering = ['-id']

    books = BookInfoManger() # 实例化管理器类

情况二:修改管理器返回的原始查询集:重写 get_queryset()方法

class BookInfoManger(models.Manager):
    def get_queryset(self): # 重写这两个方法
        return super(BookInfoManger, self).get_queryset().filter()

    def create_book(self,title,pub_date):
        book = self.model()
        book.btitle = title
        book.bpub_date = pub_date
        return book


你可能感兴趣的:(管理器 Manager)