写点什么

使用 Django 中的 filter 方法进行数据查询

  • 2024-05-23
    湖南
  • 本文字数:1231 字

    阅读完需:约 4 分钟

在 Django 中,QuerySetfilter() 方法是一个强大的工具,用于从数据库中检索数据并根据指定的条件进行筛选。在本文中,我们将介绍如何使用 filter() 方法来执行各种类型的数据查询操作。

基本用法

1. 等于 (=)

results = MyModel.objects.filter(title='Example')
复制代码

2. 不等于 (exclude)

results = MyModel.objects.exclude(title='Example')
复制代码

3. 大于 (__gt) / 大于等于 (__gte)

results = MyModel.objects.filter(price__gt=10)results = MyModel.objects.filter(price__gte=10)
复制代码

4. 小于 (__lt) / 小于等于 (__lte)

results = MyModel.objects.filter(price__lt=10)results = MyModel.objects.filter(price__lte=10)
复制代码

5. 包含 (__contains) / 不包含 (exclude + __contains)

results = MyModel.objects.filter(title__contains='Example')results = MyModel.objects.exclude(title__contains='Example')
复制代码

6. 开始于 (__startswith) / 结束于 (__endswith)

results = MyModel.objects.filter(title__startswith='Ex')results = MyModel.objects.filter(title__endswith='ple')
复制代码

7. 正则表达式匹配 (__regex)

results = MyModel.objects.filter(title__regex=r'^Ex.*')
复制代码

8. 是否为空 (__isnull)

results = MyModel.objects.filter(price__isnull=True)results = MyModel.objects.filter(price__isnull=False)
复制代码

组合查询

1. AND 条件

results = MyModel.objects.filter(title='Example', price__gt=10)
复制代码

2. OR 条件 (使用 Q 对象)

from django.db.models import Q
results = MyModel.objects.filter(Q(title='Example') | Q(price__gt=10))
复制代码

IN 查询

1. __in 查询

results = MyModel.objects.filter(id__in=[1, 2, 3])
复制代码

日期查询

1. 日期字段 (__date, __year, __month, __day, __week_day)

results = MyModel.objects.filter(created_at__date='2024-05-21')results = MyModel.objects.filter(created_at__year=2024)results = MyModel.objects.filter(created_at__year=2024, created_at__month=5)results = MyModel.objects.filter(created_at__year=2024, created_at__month=5, created_at__day=21)
复制代码

外键字段查询

1. 跨表查询

results = MyModel.objects.filter(user__email='example@example.com')
复制代码

示例代码

# 导入必要的模块和类from django.db import models
# 创建模型类class MyModel(models.Model): title = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) created_at = models.DateTimeField()
# 使用 filter 方法进行数据查询results = MyModel.objects.filter(title='Example', price__gt=10)
# 打印结果for result in results: print(result)
复制代码

以上就是 Django 中 filter() 方法的基本用法和示例。通过灵活运用不同的查询条件,可以轻松地从数据库中检索出需要的数据。希望本文能对你在 Django 开发中的数据查询操作有所帮助!


作者:pycode

链接:https://juejin.cn/post/7371479502457094178

用户头像

欢迎关注,一起学习,一起交流,一起进步 2020-06-14 加入

公众号:做梦都在改BUG

评论

发布
暂无评论
使用 Django 中的 filter 方法进行数据查询_Python_我再BUG界嘎嘎乱杀_InfoQ写作社区