Django QuerySet对象的filter()方法详解
创作时间:
作者:
@小白创作中心
Django QuerySet对象的filter()方法详解
引用
CSDN
1.
https://m.blog.csdn.net/qq_26086231/article/details/140245782
本文将详细介绍Django框架中QuerySet对象的filter()方法的使用。filter()方法用于实现数据过滤功能,类似于SQL语句中的WHERE子句。通过具体的代码示例和步骤说明,帮助读者更好地理解和掌握这一知识点。
filter()方法的基本用法
filter()方法用于实现数据过滤功能,相当于SQL语句中的WHERE子句。
filter(字段名__exact=10)
或filter(字段名=10)
类似SQL中的 =10filter(字段名__gt=10)
类似SQL中的 >10filter(price__lt=29.99)
类似SQL中的 <29.99filter(字段名__gte=10, 字段名__lte=20)
类似SQL中的 >=10 and <=10
使用filter()方法获取所有价格在10到20之间的书籍:
# books = Book.objects.filter(price__gte=10, price__lte=20) # __gte是“greater than or equal to”(大于等于)的缩写,__lte是“less than or equal to”(小于等于)的缩写。
# books = Book.objects.filter(price__gt=10) # 在Django的ORM(对象关系映射)查询中,__gt是过滤条件的一个特殊语法,用于表示“大于”(greater than)。
books = Book.objects.filter(price__lt=29.99) # __lt 是“less than”(小于)的缩写。
实战应用:创建一个Django应用
接下来,我们将通过一个完整的Django应用示例,展示如何使用filter()方法进行数据过滤。
1. 添加模型
在Test/app11/models.py
中添加模型:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
price = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return self.title
2. 添加视图函数
在Test/app11/views.py
中添加视图函数:
from django.shortcuts import render
from .models import Post
def index(request):
posts = Post.objects.all()
return render(request, '11/index.html', {'posts': posts})

# apps/books/views.py
from django.shortcuts import render
from .models import Book
def book_list_view(request):
# 使用filter()方法获取所有价格在10到20之间的书籍
books = Book.objects.filter(price__gte=10, price__lte=20)
return render(request, '11/book_list.html', {'books': books})
3. 添加路由地址
在Test/app11/urls.py
中添加路由地址:
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.index, name='index'),
path('book_list_view/', views.book_list_view, name='book_list_view'),
]
4. 执行迁移
在终端执行以下命令进行数据迁移:
python manage.py makemigrations app11

python manage.py migrate app11
5. 创建示例数据
在Test/create_books.py
中创建示例数据:
import os
import django
# 设置Django环境,需要指定settings模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Test.settings")
django.setup()
from app11.models import Book
def create_books():
# 创建示例书籍
book1 = Book(title="Python编程", author="小强", publication_date="2022-01-01", price=15.99)
book2 = Book(title="Django Web开发", author="小龙", publication_date="2022-04-15", price=29.99)
book3 = Book(title="算法导论", author="小龙", publication_date="2024-07-20", price=19.99)
book4 = Book(title="java入门到弃坑", author="余胜军", publication_date="2019-02-20", price=39.99)
book5 = Book(title="c入门到弃坑", author="小龙", publication_date="2012-07-20", price=9.99)
book6 = Book(title="c++入门到弃坑", author="小6", publication_date="2024-02-20", price=13.99)
book7 = Book(title="python多线程入门", author="小6", publication_date="2025-02-20", price=49.99)
# 保存书籍到数据库
book1.save()
book2.save()
book3.save()
book4.save()
book5.save()
book6.save()
book7.save()
print("数据创建成功!")
if __name__ == "__main__":
create_books()
6. 访问页面
启动Django开发服务器,访问以下URL:
http://127.0.0.1:8000/app11/book_list_view/
可以看到价格在10到20块之间的书籍数据都展示出来了。
热门推荐
猫咪几个月才算成年期?如何判断猫咪的成年状态?
AI无法替代的思考:哲学在技术时代的永恒价值
二战德军攻城炮大盘点:80厘米古斯塔夫巨炮堪称要塞克星
牙周脓肿的"惊奇冒险":从成因到预防的全面解析
羽衣甘蓝的功效与作用
玫瑰菊花茶能否改善皮肤干燥?
台州八大特色美食推荐,第七道菜健康又美味!
旧款电脑用户必读:Windows 11 24H2更新的全面影响与应对策略
长期跷二郎腿对膝关节有影响吗?5招轻松纠正快速康复
水管漏水要查明 表前表后大不同
胃镜检查时,如何解读Barrett食管
增程车的纯电续航短是否值得购买?使用后才明白真相。
持股时间对股票分红有影响吗?分析持股期限与分红金额的关系
拓普“吃下”奇瑞供应商,“宁波富豪”打响汽车零部件“兼并战”
盗窃车内财物立案标准
“一天开几百个榴莲,工具都累了”,实地调查榴莲价格大跳水
拖欠工资不给奖金可以在职仲裁吗
经常觉得喉咙不舒服,我们该怎么办?至少有6个方面可以做
石榴石:激情、力量和永恒之美的宝石
什么是租售比?如何根据租售比评估房价?
清香满怀的诗句:春天采茶的诗句?
氟斑牙冷光美白有用吗
尿黄原因何在?医生告诉你!
小便总是黄色的怎么回事
未成年人人身损害赔偿起诉状写作指南及责任归属解析
如何计算累计不良率?不良率的计算方法有哪些?
银行不良率怎么算
肠漏是什么?医生专业解答
李白与杜甫:晚年矛盾与隔阂探析
甪直古镇游玩攻略,含门票、交通、游玩路线、景点介绍、美食