📜  django 查询中的运算符 - Python (1)

📅  最后修改于: 2023-12-03 14:40:47.197000             🧑  作者: Mango

Django 查询中的运算符 - Python

在 Django 中,查询是常见的操作之一。Django 提供了各种运算符用于条件过滤、比较和聚合查询。本文将介绍 Django 查询中的常用运算符。

1. 比较运算符

比较运算符用于比较两个值之间的关系。常用的比较运算符有:

  • =:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

下面是使用比较运算符进行查询的示例代码:

from django.db.models import Q
from myapp.models import MyModel

# 查询 age 大于等于 18 的对象
MyModel.objects.filter(age__gte=18)

# 查询 name 不等于 "John" 的对象
MyModel.objects.exclude(name="John")

# 使用 Q 对象进行复杂条件查询
MyModel.objects.filter(Q(age__lt=20) | Q(name__icontains="john"))
2. 包含运算符

包含运算符用于检查某些数据是否包含在另一组数据中。常用的包含运算符有:

  • in:包含在列表中
  • contains:包含某个值
  • icontains:不区分大小写地包含某个值

下面是使用包含运算符进行查询的示例代码:

from myapp.models import MyModel

# 查询 name 包含 "John" 的对象
MyModel.objects.filter(name__contains="John")

# 查询 age 在列表 [18, 20, 22] 中的对象
MyModel.objects.filter(age__in=[18, 20, 22])
3. 逻辑运算符

逻辑运算符用于组合多个查询条件。常用的逻辑运算符有:

  • &:逻辑与
  • |:逻辑或
  • ~:逻辑非

可以使用逻辑运算符将不同的查询条件组合在一起。

下面是使用逻辑运算符进行查询的示例代码:

from django.db.models import Q
from myapp.models import MyModel

# 查询年龄小于 20 且名字为 "John" 的对象
MyModel.objects.filter(Q(age__lt=20) & Q(name="John"))

# 查询年龄大于 30 或名字包含 "Smith" 的对象
MyModel.objects.filter(Q(age__gt=30) | Q(name__contains="Smith"))

# 查询年龄不等于 25 的对象
MyModel.objects.filter(~Q(age=25))

以上是 Django 查询中常用的运算符。通过合理使用这些运算符,可以轻松构建出复杂的查询语句。

注意:上述示例代码中的 MyModel 是一个 Django 模型类的示例,请根据实际情况替换为自己的模型类。

希望这个介绍能够帮助你更好地理解 Django 查询中的运算符。