django-mongoengine-filter是一个可重用的Django应用,灵感来源于django-filter,允许mongoengine用户动态过滤查询集。
项目描述
django-mongoengine-filter是一个可重用的Django应用,允许用户动态过滤mongoengine查询集。它与流行的django-filter库非常相似,设计成可以作为MongoEngine的即插即用替代品(尽可能多)。
有关Read the docs的完整文档。
要求
Python 3.7, 3.8, 3.9, 3.10或3.11。
MongoDB 3.x, 4.x, 5.x。
Django 2.2, 3.0, 3.1, 3.2, 4.0或4.1。
安装
使用pip安装
pip install django-mongoengine-filter
或最新开发版本
pip install https://github.com/barseghyanartur/django-mongoengine-filter/archive/master.zip
用法
示例文档
from mongoengine import fields, document
from .constants import PROFILE_TYPES, PROFILE_TYPE_FREE, GENDERS, GENDER_MALE
class Person(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):
return self.name
示例过滤器
import django_mongoengine_filter
class PersonFilter(django_mongoengine_filter.FilterSet):
profile_type = django_mongoengine_filter.StringFilter()
ten_fingers = django_mongoengine_filter.MethodFilter(
action="ten_fingers_filter"
)
class Meta:
model = Person
fields = ["profile_type", "ten_fingers"]
def ten_fingers_filter(self, queryset, name, value):
if value == 'yes':
return queryset.filter(num_fingers=10)
return queryset
示例视图
基于功能的视图
def person_list(request):
filter = PersonFilter(request.GET, queryset=Person.objects)
return render(request, "dfm_app/person_list.html", {"object_list": filter.qs})
或基于类的视图
from django_mongoengine_filter.views import FilterView
class PersonListView(FilterView):
filterset_class = PersonFilter
template_name = "dfm_app/person_list.html"
示例模板
<ul>
{% for obj in object_list %}
<li>{{ obj.name }} - {{ obj.age }}</li>
{% endfor %}
</ul>
示例请求
GET /persons/
GET /persons/?profile_type=free&gender=male
GET /persons/?profile_type=free&gender=female
GET /persons/?profile_type=member&gender=female
GET /persons/?ten_fingers=yes
开发
测试
在您的开发环境中运行测试,请输入
pytest -vrx
要测试所有支持的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-only OR LGPL-2.1-or-later
支持
对于任何安全问题,请联系作者部分提供的电子邮件。
对于整体问题,请访问GitHub。
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
django-mongoengine-filter-0.4.2.tar.gz (37.1 kB 查看哈希)
构建分发
关闭
哈希 for django_mongoengine_filter-0.4.2-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 344f65c09b09475447a7903445983426b7146cb55d528be733c48cf32307b6d7 |
|
MD5 | 4502441cb36667e2befd4e366d259804 |
|
BLAKE2b-256 | 06751082a3bb941398035c3be5993258dbc6ee335f17b0beb1be4c4dc256f1d1 |