7. Django学习笔记——models的Manager
2019-03-31 23:30
204 查看
·django通过models的manager来执行数据库操作。
·每个django model至少有一个manager。
·可以自定义manager。
·自定义manager必须继承自models.Manager
给默认的manager改名:
class Person(models.Model): #这里有一个默认的 objects = models.Manager()(manage其实是Person的类属性) ... people = models.Manager()
这里相当于改名,会替代objects,原来的objects就不能用了,要向想可以使用,在最后加上这个:
objects = models.Manager()
定制manager
1)增加额外的方法:
class BookManager(models.Manager): def title_count(self, keyword): return self.filter(title__icontains=keyword).count() class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() num_pages = models.IntegerField(blank=True, null=True) objects = BookManager() def __str__(self): return self.title
2)修改默认manager的查询集
class DahlBookManager(models.Manager): def get_queryset(self): return super(DahlBookManager, self).get_queryset().filter(author='Roa') class Book(models.Model): title = models.CharField(max_leng 4000 th=100) author = models.CharField(max_length=50) objects = models.Manager() # The default manager. dahl_objects = DahlBookManager() # The Dahl-specific manager.
3)使用多个manager
class MaleManager(models.Manager): def get_queryset(self): return super(MaleManager, self).get_queryset().filter(sex='M') class FemaleManager(models.Manager): def get_queryset(self): return super(FemaleManager, self).get_queryset().filter(sex='F') class Person(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) sex = models.CharField(max_length=1, choices=( ('M', 'Male'), ('F', 'Female') ) ) people = models.Manager() men = MaleManager() women = FemaleManager() def get_queryset(self): return super().get_queryset().filter(gender=True)
相关文章推荐
- Django学习笔记(六)--models与mysql数据库接入
- south同步django的models的mysql数据库
- django搭建web (四) models.py
- Django笔记-Models
- django_models_文件上传和图片上传
- 【django】自定义列表 models字段显示
- Django的Models(二)映射关系
- 6 Django系列之关于models的sql语句日常用法总结
- django models.
- Django(5)模型models定义详解
- Django学习笔记(二)App创建之Model
- django models 模型 从入门到进阶
- 8. Django学习笔记——视图及HttpRequest 和HttpResponse
- Django1.6中models模型关联的方法整理
- 第三方程序调用django的models
- Django学习之路4-Models
- Django学习笔记
- Django的models实现分析
- django-2 models
- 基于Django的在线MOOC学习系统(3)——创建 user App 并设计 models.py