当前位置: 首页 > news >正文

金猪云高端网站建设wordpress技术服务

金猪云高端网站建设,wordpress技术服务,做微商做什么网站比较好,wordpress 工具栏遮挡django-filter是一个通用的、可重用的应用程序#xff0c;它可以减轻视图代码的编写工作量。具体来说#xff0c;它允许用户根据模型的字段筛选查询集#xff0c;并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…django-filter是一个通用的、可重用的应用程序它可以减轻视图代码的编写工作量。具体来说它允许用户根据模型的字段筛选查询集并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTALLED_APPS [...django_filters, ] REST_FRAMEWORK {DEFAULT_FILTER_BACKENDS: (django_filters.rest_framework.DjangoFilterBackend,...), }现有如下model: from django.db import modelsclass Product(models.Model):name models.CharField(max_length255)price models.DecimalField(max_digits5, decimal_places2)description models.TextField()release_date models.DateField()manufacturer models.ForeignKey(Manufacturer, on_deletemodels.CASCADE)现在我们在ListAPIView中添加filterset_fields属性 class ProductAPIView(ListAPIView):queryset Product.objects.all()serializer_class ProductSerializerfilterset_fields (category, in_stock)或者这样 from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):class Meta:model Productfields [category, in_stock]class ProductAPIView(ListAPIView):queryset Product.objects.all()serializer_class ProductSerializerfilterset_class ProductFilterSet此时我们可以通过category或in_stock参数来精确查找product的列表数据。值得注意的是如果同时存在filterset_class与filterset_fields属性时将会优先使用filterset_class属性 FilterSet 在上面的例子我们可以看到我们可以自定义字段来进行精确匹配…但是这远远满足不了用户的需求如果用户需要模糊匹配范围查询等等操作时那该怎么办呢此时我们可以对FilterSet改造如下 import django_filters from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):price django_filters.NumberFilter()price__gt django_filters.NumberFilter(field_nameprice, lookup_exprgt) # price 大于 指定值price__lt django_filters.NumberFilter(field_nameprice, lookup_exprlt) # price 小于 指定值price__isnull django_filters.NumberFilter(field_nameprice, lookup_exprisnull) # price 为空price__notnull django_filters.NumberFilter(field_nameprice, lookup_exprisnull, excludeTrue) # price 不为空release_year django_filters.NumberFilter(field_namerelease_date, lookup_expryear) # release_date的年份 等于 指定值release_year__gt django_filters.NumberFilter(field_namerelease_date, lookup_expryear__gt) # release_date的年份 大于 指定值release_year__lt django_filters.NumberFilter(field_namerelease_date, lookup_expryear__lt) # release_date的年份 小于 指定值class Meta:model Productfields [price, release_year, category, in_stock]如果使用该FilterSet那么传入price, “price__gt”, “price__lt”, “release_year”, “release_year__gt”, “release_year__lt”, “category”, in_stock参数都可以进行过滤了。 关于过滤器有两个主要的参数 field_name: 要筛选的模型字段的名称。你可以适用Django中的__语法遍历关系路径来过滤相关模型上的字段。例如manufacturer__namelookup_expr: 筛选时要适用的字段查找。Django的__语法也可以用来支持查找转换。例如year__gte。exclude: 反转逻辑 此外字典可用于为每个字段指定多个查找表达式 from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):class Meta:model Productfields {price: [exact, lt, gt],release_date: [exact, year__gt, year__lt]}上述语句将生成price, “price__lt”, “price__gt”, “release_date”, “release_date__year__gt”, release_date__year__lt过滤器传入这些参数可以进行过滤操作。 filter_overrides 我们可以在Meta类上使用filter_overrides属性覆盖所有同类models字段的默认过滤器 class ProductFilter(django_filters.FilterSet):class Meta:model Productfields [name, description]filter_overrides {models.CharField: {filter_class: django_filters.CharFilter,extra: lambda f: {lookup_expr: icontains,},}}那么“name”, description字段过滤将由原来的精确匹配变成了模糊匹配了 qs 如果你想要根据request对象来筛选queryset你可以覆盖qs只读属性。例如可以将博客文章过滤为已发布的文章和已登录用户拥有的文章(假设是作者的文章草稿): class ArticleFilterSet(filters.FilterSet):class Meta:model Articlefields [...]propertydef qs(self):parent super().qsauthor getattr(self.request, user, None)return parent.filter(is_publishedTrue) | parent.filter(authorauthor)自定义过滤方法 可以通过指定执行筛选的方法来控制筛选器的行为。在方法参考中查看更多信息。请注意你可以访问筛选器集的属性例如request class ProductFilterSet(filters.FilterSet):username django_filters.CharFilter(methodmy_custom_filter)class Meta:model Productfields [username]def my_custom_filter(self, queryset, name, value):return queryset.filter(**{name: value})自定义Filter 你可以重写过滤器类的filter()方法来做一些特殊的事情。如下 import django_filters from django.core.validators import EMPTY_VALUESclass MyCharFilter(django_filters.CharFilter):def filter(self, qs, value):if value in EMPTY_VALUES:return qsif self.distinct:qs qs.distinct()lookup %s__%s % (self.field_name, self.lookup_expr)qs self.get_method(qs)(**{lookup: value})return qs重写FilterSet的创建 FilterSet的创建可以通过覆盖后端类上的以下方法进行自定义 .get_filterset(self, request, queryset, view).get_filterset_class(self, view, querysetNone).get_filterset_kwargs(self, request, queryset, view) 你可以为每个视图逐个重写这些方法创建唯一的后端或者可以使用这些方法编写自己的视图类钩子。 视图属性重命名 几个与视图相关的属性被重命名以提高与库其他部分的一致性。重命名属性如下 ViewSet.filter_class filterset_classViewSet.filter_fields filterset_fieldsDjangoFilterBackend.default_filter_set filterset_baseDjangoFilterBackend.get_filter_class get_filterset_class()FilterMixin.filter_fields filterset_fields 更多用法 https://django-filter.readthedocs.io/en/main/index.html
http://www.hkea.cn/news/14276980/

相关文章:

  • 外贸网站怎么规划东莞教育建站
  • 嘉兴城乡建设局门户网站长春火车站到长春机场大巴时刻表
  • 网站建设的背景阿里云免备案服务器
  • 余姚市网站建设网站后台上传图片做难吗?
  • 湖州网站推广监理工程师
  • 网站建设平ppt江苏建筑网站
  • 请人做外贸网站应注意什么李沧网站建设谁家好
  • 数码网站名浅析网站域名在搜索引擎排名中的作用
  • 域名与网站名称的关系网站开发组
  • 济南seo网站排名优化工具2015微信网站开发
  • 域名申请通过了网站怎么做wordpress点击量最多的文章
  • 英语网站排名鄞州区网站建设
  • 做运营需要知道素材网站郑州网站建设seo
  • 怎么开通个人网站广州好的网站设计公司
  • 石家庄建设局官方网站青海住房建设厅网站
  • 网站建设周期规划移动端下拉框价威cj111602推广
  • 上海工程建设安全协会网站学校建设网站报告书
  • 企业网站设计说明哪些网站是503错误代码
  • 网站链接数网站后台 生成所有页面
  • 布吉企业网站建设编程培训费用
  • 黑色风格网站主页面wordpress如何链接地址
  • 迈创网站建设wordpress多媒体路径
  • 怎么做会员自动售卡网站遵义门户网站
  • 重庆 手机网站制作南京需要做网站的公司
  • 网站视频怎么做的网线制作的步骤
  • 湖南省建设网站告诉你做网站需要多少钱
  • 奉化建设网站wordpress默认图像不显示
  • 赣州网站建设优化服务网站建设营销企业
  • 建站后角度是不是0视频网站开发分析
  • 个人做网站排版什么是网站栏目标题