Skip to main content

PyPi Version PyPi Downloads Tests Weekly Documentation Code style: black Total alerts Language grade: Python

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)

Source distribution for django-nlf 0.0.4
File Size Uploaded
django-nlf-0.0.4.tar.gz 30.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-nlf 0.0.4
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page