Django中自定义查询对象的具体使用

yipeiwu_com6年前Python基础

自定义查询对象 - objects

①声明一个类EntryManager,继承自models.Manager,并添加自定义函数

②使用创建的自定义类EntryManager 覆盖Models中的objects

# models.py
class AuthorManager(models.Manager): # 新建一个类,继承自models.Manager
  def name_count(self, keywords): # 添加自定义的查询函数
   '''统计姓名中含有某些关键字的数量'''
    return self.filter(name__contains=keywords).count()
    
  def lt_age(self, age):
    '''查询年龄小于指定年龄的信息'''
    return self.filter(age__lt=age)

class Author(models.Model):
  objects = AuthorManager() # 使用创建的自定义类覆盖objects

  name = models.CharField(max_length=30, verbose_name='姓名')
  age = models.IntegerField(verbose_name='年龄')
  email = models.EmailField(null=True, verbose_name='邮箱')
  picture = models.ImageField(null=True, upload_to='static/upload/usring', verbose_name='用户头像')

  publisher = models.ManyToManyField(Publisher, null=True, verbose_name='出版社')

# views.py
def myself(request):
 '''自定义查询函数'''
 # 统计名字中包含王字的
  num = Author.objects.name_count(keywords='王') 
 
 # 查询年龄小于36的作者信息
  authors = Author.objects.lt_age(age=36)
  return render(request, 'name_count.html', locals())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

在python中将list分段并保存为array类型的方法

如下所示: list=[1,2,3,4,5,6,7,8,9,0,11,0,13,14,15,16,17,18,19,20] #把list分为长度为5的4段 for j in rang...

解读Django框架中的低层次缓存API

有些时候,对整个经解析的页面进行缓存并不会给你带来太多好处,事实上可能会过犹不及。 比如说,也许你的站点所包含的一个视图依赖几个费时的查询,每隔一段时间结果就会发生变化。 在这种情况下,...

​如何愉快地迁移到 Python 3

引言 如今 Python 成为机器学习和大量使用数据操作的科学领域的主流语言; 它拥有各种深度学习框架和完善的数据处理和可视化工具。但是,Python 生态系统在 Python2 和 P...

win10系统中安装scrapy-1.1

win10系统中安装scrapy-1.1

0.环境说明 win10 64bit,电脑也是64bit的处理器,电脑装有vs2010 64bit,但是为了保险起见,只试验了32位的安装,等有时间了,再试下64位的安装。如无特殊说明,...

Python函数的定义方式与函数参数问题实例分析

Python函数的定义方式与函数参数问题实例分析

本文实例讲述了Python函数的定义方式与函数参数问题。分享给大家供大家参考,具体如下: 涉及内容: 函数的定义方式 函数的文字描述 空操作语句 位置参数 默认参...