当前位置:   article > 正文

Django QuerySet对象,filter()方法

Django QuerySet对象,filter()方法

 filter()方法 用于实现数据过滤功能,相当于sql语句中的where子句。

filter(字段名__exact=10) 或 filter(字段名=10)类似sql 中的 =10
filter(字段名__gt=10)
类似SQL中的 >10
filter(price__lt=29.99)
类似sql中的 <29.99
filter(字段名__gte=10, 字段名__lte=20)
类似sql中的 >=10 and <=10



使用filter()方法获取所有价格在10到20之间的书籍
  1. # books = Book.objects.filter(price__gte=10, price__lte=20) # __gte是“greater than or equal to”(大于等于)的缩写,__lte是“less than or equal to”(小于等于)的缩写。
  2. # books = Book.objects.filter(price__gt=10) # 在Django的ORM(对象关系映射)查询中,__gt是过滤条件的一个特殊语法,用于表示“大于”(greater than)。
  3. books = Book.objects.filter(price__lt=29.99) # __lt 是“less than”(小于)的缩写。

1,添加模型

Test/app11/models.py

  1. from django.db import models
  2. class Post(models.Model):
  3. title = models.CharField(max_length=200)
  4. content = models.TextField()
  5. pub_date = models.DateTimeField('date published')
  6. class Book(models.Model):
  7. title = models.CharField(max_length=100)
  8. author = models.CharField(max_length=100)
  9. publication_date = models.DateField()
  10. price = models.DecimalField(max_digits=5, decimal_places=2)
  11. def __str__(self):
  12. return self.title

2,添加视图函数

Test/app11/views.py

  1. from django.shortcuts import render
  2. from .models import Post
  3. def index(request):
  4. posts = Post.objects.all()
  5. return render(request, '11/index.html', {'posts': posts})
  6. # apps/books/views.py
  7. from django.shortcuts import render
  8. from .models import Book
  9. def book_list_view(request):
  10. # 使用filter()方法获取所有价格在10到20之间的书籍
  11. books = Book.objects.filter(price__gte=10, price__lte=20)
  12. return render(request, '11/book_list.html', {'books': books})

3,添加路由地址

Test/app11/urls.py

  1. from django.urls import path
  2. from . import views
  3. urlpatterns = [
  4. path('index/', views.index, name='index'),
  5. path('book_list_view/', views.book_list_view, name='book_list_view'),
  6. ]

4,执行迁移

  1. python manage.py makemigrations app11
  2. python manage.py migrate app11

5,创建示例数据

Test/create_books.py

  1. import os
  2. import django
  3. # 设置Django环境,需要指定settings模块
  4. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Test.settings")
  5. django.setup()
  6. from app11.models import Book
  7. def create_books():
  8. # 创建示例书籍
  9. book1 = Book(title="Python编程", author="小强", publication_date="2022-01-01", price=15.99)
  10. book2 = Book(title="Django Web开发", author="小龙", publication_date="2022-04-15", price=29.99)
  11. book3 = Book(title="算法导论", author="小龙", publication_date="2024-07-20", price=19.99)
  12. book4 = Book(title="java入门到弃坑", author="余胜军", publication_date="2019-02-20", price=39.99)
  13. book5 = Book(title="c入门到弃坑", author="小龙", publication_date="2012-07-20", price=9.99)
  14. book6 = Book(title="c++入门到弃坑", author="小6", publication_date="2024-02-20", price=13.99)
  15. book7 = Book(title="python多线程入门", author="小6", publication_date="2025-02-20", price=49.99)
  16. # 保存书籍到数据库
  17. book1.save()
  18. book2.save()
  19. book3.save()
  20. book4.save()
  21. book5.save()
  22. book6.save()
  23. book7.save()
  24. print("数据创建成功!")
  25. if __name__ == "__main__":
  26. create_books()

6,访问页面  

 http://127.0.0.1:8000/app11/book_list_view/

可以看到10到20块的书籍数据都展示出来了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/799739
推荐阅读
相关标签
  

闽ICP备14008679号