Django—— F、Q查询

简介: Django—— F、Q查询

已有表

from django.db.models import Model, F, Q

class Goods(Model):
    name = CharField(max_length=32, verbose_name='产品名称')
    surplus = IntegerField(verbose_name='余量')
    sales = IntegerField(verbose_name="销量")
    total = IntegerField(verbose_name="总量")

已有数据

id name surplus sales total
1 商品A 1 1 2
2 商品B 1 0 1
3 商品C 0 1 1
4 商品D 0 0 3

F查询

根据同一条数据中两个值的对比查询

  • 例: 查询余量和销量相同的商品, 需要查到 商品A

    Goods.objects.filter(surplus=F('sales'))
  • 查询余量小于销量的商品, 需要查到 商品C

    Goods.objects.filter(surplus__lt=F('sales'))
  • F查询还可以在查询中进行计算
  • 查询余量加销量等于总量的商品, 需要查到 商品A B C

    Goods.objects.filter(total=F('sales') + F('surplus'))
  • F表达式功能还有很多,这里只是总结了一些用到的查询方法,其余功能可以参考官方文档:Django—F表达式

Q查询

Django查询的 or 操作

  • 例: 查询总量为2, 或者总量为3的商品, 需要查到商品A和商品D

    Goods.objects.filter(Q(total=2) | Q(total=3))

~Q 不等于

  • 例: 查询总量不等于3的商品, 需要查到 商品A B C

    Goods.objects.filter(~Q(total=3))

F查询和Q查询混合使用

  • 例: 查询余量加销量不等于总量的商品, 需要查到商品D

    Goods.objects.filter(Q(total__lt=F('sales') + F('surplus')) | Q(total__gt=F('sales') + F('surplus')))
  • 或者这样

    Goods.objects.filter(~Q(total=F('sales') + F('surplus')))
相关文章
|
1月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
61 0
|
1月前
|
SQL 前端开发 Python
基于python-django的neo4j人民的名义关系图谱查询系统
基于python-django的neo4j人民的名义关系图谱查询系统
34 0
|
4月前
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
77 1
|
5月前
|
JSON 数据库 数据格式
使用 Django Q 对象构建复杂查询条件
通过本文示例,我们展示了如何使用Django的Q对象来构建复杂的查询条件,以及如何实现分页功能。Q对象的强大之处在于它能够轻松地组合多个查询条件,支持“与”、“或”关系,极大地提高了查询的灵活性和可读性。希望本文对你在实际项目中使用Django ORM构建复杂查询有所帮助。
|
5月前
|
存储 SQL 数据处理
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解
|
5月前
|
前端开发 数据库 Python
Python Django项目下的分页和筛选查询
在Django中实现分页功能,视图函数通过`Paginator`处理数据,每页显示10条记录。URL配置支持带参数和不带参数的分页请求。前端模板使用for循环展示分页数据,包括商品信息和状态按钮,并利用分页组件导航。筛选查询视图根据GET请求的`state`参数过滤上架或下架产品,同样实现分页功能。前端添加状态选择下拉框,分页链接携带查询参数`state`确保筛选状态在翻页时保持。
|
SQL 缓存 数据库
10 Django模型 - 模型查询
10 Django模型 - 模型查询
62 0
|
6月前
|
SQL 缓存 数据库
在Python Web开发过程中:数据库与缓存,如何使用ORM(例如Django ORM)执行查询并优化查询性能?
在Python Web开发中,使用ORM如Django ORM能简化数据库操作。为了优化查询性能,可以:选择合适索引,避免N+1查询(利用`select_related`和`prefetch_related`),批量读取数据(`iterator()`),使用缓存,分页查询,适时使用原生SQL,优化数据库配置,定期优化数据库并监控性能。这些策略能提升响应速度和用户体验。
59 0
|
缓存 数据库 Python
django这些查询技巧你会了吗?
django这些查询技巧你会了吗?
|
SQL 数据库 索引
【Django学习】(六)ORM框架_关联模型_数据创建&查询&更新&删除&过滤
【Django学习】(六)ORM框架_关联模型_数据创建&查询&更新&删除&过滤
【Django学习】(六)ORM框架_关联模型_数据创建&查询&更新&删除&过滤