创建运行ElasticSearch查询的表单

django-elasticfilter的Python项目详细描述


创建执行elasticsearch查询和筛选的django表单。

安装

使用pip安装:

pip install django-elasticfilter

使用

过滤表单是标准的django表单,有一些小的扩展。 它们继承自elasticfilter.filterform.filterform。 要搜索和筛选的字段声明为表单上的字段, 它应该继承自elasticfilter.fields.basefield

fromelasticfilter.filterformimportFilterFormfromelasticfilter.fieldsimportQuery,FilterclassMyFilterForm(FilterForm):classFilterFormMeta:s=S().get_es(**ES_SETTINGS)\
            .indexes('my-index')\
            .doctypes('my-doctype')match=Query(required=False,fields=['_all','_partial'])type=Filter(field='type')

自定义查询和筛选

提供的QueryFilter类非常基本。 编写自定义的QueryFilter类非常简单。 例如,根据模型的ContentType筛选结果:

fromdjangoimportformsfromdjango.db.modelsimportget_modelsfromelasticfilter.filterformimportFilterFormfromelasticfilter.fieldsimportFilterclassContentTypeFilter(Filter,forms.ChoiceField):required=Falsedef__init__(self,models=None,**kwargs):ifmodelsisNone:models=get_models()self.choice_map=dict((model._meta.model_name,model)formodelinmodels)choices=[(key,model.get_verbose_name())forkey,modelinself.choice_map.items()]kwargs.setdefault('choices',choices)super(ContentTypeFilter,self).__init__(**kwargs)defsearch(self,s,name,data):value=data.get(name,None)ifnotvalue:returnsfield=self.fieldornamecontent_type=ContentType.objects.get_for_model(self.choice_map[value])returns.filter(F(**{field:content_type.pk}))classMyFilterForm(FilterForm):content_type=ContentTypeFilter()

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

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像