django-rest框架的链式关系与过滤

djangorestframework-chain的Python项目详细描述


` django rest framework chain是django rest framework的扩展,它允许任意链接关系和查找过滤器。图片::https://secure.travis-ci.org/philipn/django-rest-framework-chain.png?branch=master
:目标:http://travis ci.org/philipn/django rest framework chain

代码块::bash

$pip install djangorestframework chain


requirements
----
*django 1.4.5+


usage
-


过滤关系:

…代码块::python

from rest_framework import viewsets
import django_filters
from rest_framework_chain import chainedfilterset,relatedfilter

只是一个常规过滤器集
类用户过滤器(django过滤器.filterset):
username=django过滤器.charfilter(name='username')


class pagefilter(chainedfilterset):
标题=django_filters.charfilter(name='title')
author=relatedfilter(userfilter,name='author')

我们可以通过"author"关系自动链接筛选器,如下所示:

/api/page/?author_u username=philipn



允许对字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用"alllookupsfilter"允许对特定字段的所有可能的查找类型。我们可以手工指定,例如:

。代码块::python

class productfilter(django_filters.filterset):
min廑price=django廑filters.numberfilter(name="price",lookup廑type='gte')


但这会很麻烦,我们有时希望
允许对特定字段进行任何可能的查找。我们通过使用"alllookupsfilter"来实现这一点:

…代码块::python

from rest_framework import viewsets
import django_filters
from rest_framework_chain import chainedfilterset,alllookupsfilter

class pagefilter(chainedfilterset):
title=alllookupsfilter(name='title')



>然后我们可以对"title"字段使用任何可能的查找,例如::

/api/page/?title_u icontains=停车场

或::

/api/page/?title_u startswith=the

,并按默认查找(``exact``)进行筛选,与往常一样:

/api/page/?title=20park

代码块::python

from rest_framework import viewsets
import django_filters
from rest_framework_chain import chainedfilterset,relatedfilter

class pagefilter(chainedfilterset):
title=django_filters.charfilter(name='title')
author=relatedfilter(userfilter,name='author')

只是一个常规过滤器集
类userfilter(chainedfilterset):
username=alllookupsfilter(name='username')



然后我们可以像这样过滤:

/api/page/?author\uu username\uu icontains=john

有关relatedfilter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
支持递归关系。在某些情况下,您需要在"relatedfilter"定义中指定完整模块
路径,例如:

。代码块::python

personfilter类(chainedfilterset):
name=alllookupsfilter(name='name')
best\u friend=relatedfilter('people.views.personfilter',name='好友')


class meta:
model=person


----
版权所有(c)2013 philip neustrom<;philipn@gmail.com>;

向任何获得本软件和相关文档文件(以下简称"软件")副本的人,无限制地处理本软件中的
,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或出售
本软件副本的权利,并允许向其提供该软件的人这样做,但须符合以下条件:


上述版权声明和本许可声明应包含在该软件的所有副本或实质性部分中。


任何形式的明示或暗示保证,包括但不限于适销性保证、特定用途适用性保证和非侵权性保证。在任何情况下,
作者或版权持有人均不对任何索赔、损害或其他
责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,由
软件或
软件的使用或其他交易引起的或与之相关的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java