当前位置:   article > 正文

Django QuerySet对象,exclude()方法

Django QuerySet对象,exclude()方法

模型参考上一章内容:

Django QuerySet对象,filter()方法-CSDN博客

exclude()方法,用于排除符合条件的数据。

1,添加视图函数

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()方法获取所有价格在1020之间的书籍
  11. # books = Book.objects.filter(price__gte=10, price__lte=20) # __gte是“greater than or equal to”(大于等于)的缩写,__lte是“less than or equal to”(小于等于)的缩写。
  12. # books = Book.objects.filter(price__gt=10) # 在Django的ORM(对象关系映射)查询中,__gt是过滤条件的一个特殊语法,用于表示“大于”(greater than)。
  13. books = Book.objects.filter(price__lt=29.99) # __lt 是“less than”(小于)的缩写。
  14. return render(request, '11/book_list.html', {'books': books})
  15. def get_book_view(request):
  16. try:
  17. # 使用get()方法获取标题为"Python Cookbook"的书籍
  18. book = Book.objects.get(id=19)
  19. # 现在book变量包含了匹配的书籍对象
  20. print(book)
  21. return render(request, '11/book_detail.html', {'book': book})
  22. except Book.DoesNotExist:
  23. # 如果没有找到匹配的书籍,返回错误信息
  24. return HttpResponse("Book not found.")
  25. except Book.MultipleObjectsReturned:
  26. # 如果找到多个匹配的书籍,返回错误信息
  27. return HttpResponse("Multiple books found with the same title.")
  28. def book_list_view_exclude(request):
  29. # 使用exclude()方法获取所有价格不等于10且标题不包含"Python"的书籍
  30. books = Book.objects.exclude(price=9.99).exclude(title__icontains="Python")
  31. return render(request, '11/book_list_exclude.html', {'books': books})

2,添加html代码

Test/templates/11/book_list_exclude.html

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>书籍列表</title>
  6. </head>
  7. <body>
  8. <h1>书籍列表</h1>
  9. {% if books %}
  10. <ul>
  11. {% for book in books %}
  12. <li>
  13. <h2>{{ book.title }}</h2>
  14. <p>作者: {{ book.author }}</p>
  15. <p>价格: {{ book.price }}</p>
  16. </li>
  17. {% endfor %}
  18. </ul>
  19. {% else %}
  20. <p>没有找到书籍。</p>
  21. {% endif %}
  22. </body>
  23. </html>

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. path('get_book_view/', views.get_book_view, name='get_book_view'),
  7. path('book_list_view_exclude/', views.book_list_view_exclude, name='book_list_view_exclude'),
  8. ]

4,访问页面 

http://127.0.0.1:8000/app11/book_list_view_exclude/

 可以看到所有价格不等于10且标题不包含"Python"的书籍数据被过滤了,没有在页面展示出来

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

闽ICP备14008679号