?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之間的書籍 |
# 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”(小于)的縮寫。
1,添加模型
Test/app11/models.py
from django.db import modelsclass 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 Postdef index(request):posts = Post.objects.all()return render(request, '11/index.html', {'posts': posts})# apps/books/views.pyfrom django.shortcuts import render
from .models import Bookdef 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 viewsurlpatterns = [path('index/', views.index, name='index'),path('book_list_view/', views.book_list_view, name='book_list_view'),
]
4,執行遷移
python manage.py makemigrations app11python 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 Bookdef 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,訪問頁面??
?http://127.0.0.1:8000/app11/book_list_view/
可以看到10到20塊的書籍數據都展示出來了