django_filters实现搜索
2024-09-04 13:14:45
定义model
# models.py class Product(models.Model):
name = models.CharField(max_length=255)
author = models.CharField(max_length=255)
price = models.DecimalField()
description = models.TextField()
定义filter
# filters.py import django_filters class ProductFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact') # iexact表示精确匹配, 并且忽略大小写
author = django_filters.CharFilter(lookup_expr='icontains') #icontains表示模糊查询(包含),并且忽略大小写
price = django_filters.NumberFilter(look_expr='exact') #exact表示精确匹配
desc = django_filters.CharFilter('description', lookup_expr='contains') #对'description'字段进行操作,不填默认为desc
#price__lte = django_filters.NumberFilter('price', lookup_expr='lte') #lte表示小于
#price__gte = django_filters.NumberFilter('price', look_expr='gte') # gte表示大于
class Meta:
model = Product
fields = ['name', 'author', 'price', 'description']
#fields = {
'price': ['lt', 'gt']
}
views中使用
class ProductViewSets(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.CreateModelMixin,
viewsets.GenericViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = ProductFilter
search_fields = ('name', 'description') # 模糊搜索的字段
ordering_fields = ('price',) # 排序的字段
最新文章
- vim笔记2
- extJs学习基础4 Ext.each的用法
- codis配置
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
- JavaScript学习小结(一)——JavaScript入门基础
- android.content.Context 含义及使用
- 【Nginx 1】Nginx 的下载和安装
- (转载)SQL语句,纵列转横列
- install ruby and ruby gem
- git ssh key for github
- Installing scikit-learn
- Java中swap解惑
- Catch That Cow(BFS)
- iOS常见控件的基本使用
- 网络流24题 P1251 餐巾计划问题 拆点
- FFmpeg开发实战(四):FFmpeg 抽取音视频的音频数据
- idea在Terminal中使用maven指令
- PHP 验证身份证
- paramiko__摘抄