Django Natural Language Filter package
Project description
Django Natural Language Filter
Django NLF provides a simple and easy way to express complex filtering criteria with a filtering language as close to natural language as possible, while providing APIs to further customize the user experience.
Installation
Install using pip
,
pip install django-nlf
And add django_nlf
to your INSTALLED_APPS
.
INSTALLED_APPS = [
...
"django_nlf",
]
Then you can use the DjangoNLFilter
with a queryset and a string, containing the filter expression. Please see the Language Reference for more details.
from django_nlf.filters import DjangoNLFilter
from .models import Article
nl_filter = DjangoNLFilter()
qs = Article.objects.all()
q = "author.username is john or title contains news"
# equivalent to Article.objects.filter(Q(author__username="john") | Q(title__icontains="news"))
articles = nl_filter.filter(qs, q)
# Nested logical operators are also supported:
q = "author.username is john and (title contains news or created_at <= 2020-06-05)"
# equivalent to
# Article.objects.filter(
# Q(author__username="john") & (Q(title__icontains="news") | Q(created_at__lte="2020-06-05"))
# )
articles = nl_filter.filter(qs, q)
Django REST framework integration
Simply add the natural language filter backend to your filter backends list.
REST_FRAMEWORK = {
"DEFAULT_FILTER_BACKENDS": (
"django_nlf.rest_framework.DjangoNLFilterBackend",
),
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-nlf-0.0.4.tar.gz
(30.9 kB
view hashes)
Built Distribution
django_nlf-0.0.4-py3-none-any.whl
(35.2 kB
view hashes)
Close
Hashes for django_nlf-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7514a3ab66edeec8a69b4eb761955b9a58a18ba5bb34fc97949c901c16405428 |
|
MD5 | 35d457667c31a2c6cfd6365eff5f1200 |
|
BLAKE2b-256 | c6c7a4c122f0804e9e3740da47e4d752d3f7286814c08dd5f72f3c1987a37f60 |