定义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',) # 排序的字段

最新文章

  1. vim笔记2
  2. email
  3. extJs学习基础4 Ext.each的用法
  4. codis配置
  5. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
  6. JavaScript学习小结(一)——JavaScript入门基础
  7. android.content.Context 含义及使用
  8. 【Nginx 1】Nginx 的下载和安装
  9. (转载)SQL语句,纵列转横列
  10. install ruby and ruby gem
  11. git ssh key for github
  12. Installing scikit-learn
  13. Java中swap解惑
  14. Catch That Cow(BFS)
  15. iOS常见控件的基本使用
  16. 网络流24题 P1251 餐巾计划问题 拆点
  17. FFmpeg开发实战(四):FFmpeg 抽取音视频的音频数据
  18. idea在Terminal中使用maven指令
  19. PHP 验证身份证
  20. paramiko__摘抄

热门文章

  1. 杭州优步uber司机第一组奖励政策
  2. mysql题目练习的答案
  3. ubuntu网卡
  4. LWM2M简介-学习记录
  5. java Arrays.asList
  6. hdu1527取石子游戏(威佐夫博弈)
  7. php常用几个数组的区别
  8. 第二篇 CSS快速入门
  9. Jquery获取DOM绑定事件
  10. 【20180807模拟测试】T2 box