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",
),
}
Metadata
Release files for django-nlf 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-nlf-0.0.4.tar.gz | 30.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_nlf-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.1 kB
Release files / django-nlf-0.0.4.tar.gz
| Download URL | django-nlf-0.0.4.tar.gz |
|---|---|
| Size | 30.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3dae9e92425522fe324e37e5f0e8c233c2a6e2f955d88358efdf20571f9c910
|
|
BLAKE2b-256 checksum How to use checksums |
35f7613e2e850168634e8806e95f0dcd0bfd731abec0a0c1a6abfc4eb7c0e57f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.9.1
|
Release files / django_nlf-0.0.4-py3-none-any.whl
| Download URL | django_nlf-0.0.4-py3-none-any.whl |
|---|---|
| Size | 35.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7514a3ab66edeec8a69b4eb761955b9a58a18ba5bb34fc97949c901c16405428
|
|
BLAKE2b-256 checksum How to use checksums |
c6c7a4c122f0804e9e3740da47e4d752d3f7286814c08dd5f72f3c1987a37f60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.9.1
|