django mongoengine filter是一个可重用的django应用程序,灵感来自django filter,它允许mongoengine用户动态过滤queryset。
django-mongoengine-filter的Python项目详细描述
django mongoengine filter是一个可重用的django应用程序,允许用户 动态过滤mongoengine querysets。它非常类似于 流行的django过滤器 替换(尽可能多)与MongoEngine严格相关。
关于Read the docs的完整文档。
要求
- Python2.7、3.5、3.6、3.7
- Django 1.11、2.0、2.1、2.2
安装
使用pip安装:
pip install django-mongoengine-filter
或最新开发版本:
pip install https://github.com/barseghyanartur/django-mongoengine-filter/archive/master.zip
用法
示例文档
frommongoengineimportfields,documentfrom.constantsimportPROFILE_TYPES,PROFILE_TYPE_FREE,GENDERS,GENDER_MALEclassPerson(document.Document):name=fields.StringField(required=True,max_length=255,default="Robot",verbose_name="Name")age=fields.IntField(required=True,verbose_name="Age")num_fingers=fields.IntField(required=False,verbose_name="Number of fingers")profile_type=fields.StringField(required=False,blank=False,null=False,choices=PROFILE_TYPES,default=PROFILE_TYPE_FREE,)gender=fields.StringField(required=False,blank=False,null=False,choices=GENDERS,default=GENDER_MALE)def__str__(self):returnself.name
示例筛选器
importdjango_mongoengine_filterclassPersonFilter(django_mongoengine_filter.FilterSet):profile_type=django_mongoengine_filter.StringFilter()ten_fingers=django_mongoengine_filter.MethodFilter(action="ten_fingers_filter")classMeta:model=Personfields=["profile_type","ten_fingers"]deften_fingers_filter(self,queryset,name,value):ifvalue=='yes':returnqueryset.filter(num_fingers=10)returnqueryset
示例视图
使用基于功能的视图:
defperson_list(request):filter=PersonFilter(request.GET,queryset=Person.objects)returnrender(request,"dfm_app/person_list.html",{"object_list":filter.qs})
或基于类的视图:
fromdjango_mongoengine_filter.viewsimportFilterViewclassPersonListView(FilterView):filterset_class=PersonFiltertemplate_name="dfm_app/person_list.html"
示例模板
<ul> {% for obj in object_list %} <li>{{ obj.name }} - {{ obj.age }}</li> {% endfor %} </ul>
示例请求
- 获取/个人/
- 获得/个人/?个人资料类型=自由性别=男性
- 获得/个人/?个人资料类型=自由性别=女性
- 获得/个人/?个人资料类型=成员和性别=女性
- 获得/个人/?十指=是
开发
测试
要在工作环境中运行测试,请键入:
./runtests.py
要使用所有受支持的Python版本进行测试,请键入:
tox
运行MongoDB
最简单的方法是通过Docker运行它:
docker pull mongo:latest
docker run -p 27017:27017 mongo:latest
编写文档
保持以下层次结构。
===== title ===== header ====== sub-header ---------- sub-sub-header ~~~~~~~~~~~~~~ sub-sub-sub-header ^^^^^^^^^^^^^^^^^^ sub-sub-sub-sub-header ++++++++++++++++++++++ sub-sub-sub-sub-sub-header **************************
许可证
gpl 2.0/lgpl 2.1
支架
如有任何问题,请通过Author部分中提供的电子邮件与我联系。