14 管理器
BookInfo.object.all() objects是个什么东东呢?
objects是Django自动生成的一个管理器对象,通过它实现对数据对查询,Django给每一个模型类都生成了一个管理器对象(objects)。
它是models.Manger类的一个对象,自定义管理器后,Django不再帮我们生成默认的objects管理器
本来bookapp项目中,BookInfo类生成的表名为:bookapp_bookinfo,我们可以在模型中定义一个元类(Meta),在Meta中定义一个类属性:db_table就可以指定一个自定义的表名。这样做的好处是表名不依赖于应用的名字,比如即使以后更改类应用的名字(bookapp),数据表也不会受影响。
class BookInfo(models.Model): btitle = models.CharField(max_length=20) bpub = models.DateField() bread = models.IntegerField(default=0) bcomment = models.IntegerField(default=0) isDelete = models.BooleanField(default=False) def __str__(self): return self.btitle class Meta: db_table = 'bookinfo'
自定义模型管理器类:
在models.py中,自定义一个模型管理器类:
from django.db import models class BookManager(models.Manager): '''图书模型管理器类''' #重写all方法,只返回is_del=0的数据 def all(self): # 1、调用父类的all方法,获取所有数据 books = super().all() # 2、对数据进行过滤 books = books.filter(isDelete=False) # 3、返回数据 return books def create_book(self,btitle,bpub): # 1、创建一个图书对象 # 2、获取self所在的类模型 model_class = self.model book = model_class() book.btitle = btitle book.bpub = bpub book.save() return book # Create your models here. class BookInfo(models.Model): btitle = models.CharField(max_length=20) bpub = models.DateField() bread = models.IntegerField(default=0) bcomment = models.IntegerField(default=0) isDelete = models.BooleanField(default=False) def __str__(self): return self.btitle class Meta: db_table = 'bookinfo' #自定义一个BookManager类的对象 objects = BookManager()


浙公网安备 33010602011771号