DjangoQL: Advanced search language for Django (iplweb fork with i18n)
Project description
DjangoQL
Advanced search language for Django, with auto-completion. Supports logical operators, parenthesis, table joins, and works with any Django model. Tested on Python 3.10–3.14, Django 5.2 and 6.0. The auto-completion feature has been tested in Chrome, Firefox, Safari, IE9+.
This is a community fork.
djangoql-iplwebis a fork of the original DjangoQL by ivelum — install the upstream package fromdjangoqlon PyPI. This fork adds internationalization (i18n) of error messages and modernized packaging/tooling.These changes are offered back to the upstream project. If the original maintainers merge them, please switch back to the upstream
djangoqlpackage — this fork exists only to make the improvements available in the meantime, and will defer to upstream once they land there.It is published on PyPI as
djangoql-iplweb, but the import name staysdjangoql(soINSTALLED_APPSandimport djangoqlare unchanged).
See a video: DjangoQL demo
Features
- Python-like query syntax: logical operators (
and,or), parenthesis, and the full set of comparison operators - Searches across model relations via joins, e.g.
author.last_name = "Tolstoy" - Works with any Django model and drops into the Django admin with a single mixin
- Live auto-completion of model field names and values in the admin
- Configurable schema to restrict searchable models/fields and provide suggestion options
- Custom search fields for annotations and fully custom search logic
- Internationalized error messages with translation catalogs for 11 locales
- Usable outside the Django admin, including a standalone JavaScript completion widget
- Multi-line queries —
Shift+Enterinserts a newline (Enterstill submits) - Pretty-print / formatting — re-indent a query via
format_query()or the…/format/endpoint - Per-branch record counts — see how many rows each sub-expression matches via
explain()or the…/explain/endpoint - Syntax highlighting — a tokenizer (
DjangoQLHighlight.tokenize) plus a lightweight, restyleable overlay; no palette or editor imposed
Installation
Using uv (recommended):
$ uv add djangoql-iplweb
Using pip:
$ pip install djangoql-iplweb
Add 'djangoql' to INSTALLED_APPS in your settings.py:
INSTALLED_APPS = [
...
'djangoql',
...
]
For full setup instructions and usage examples, see the Documentation below.
Documentation
📖 Full documentation: https://iplweb.github.io/djangoql-iplweb/
The site is built with MkDocs from the docs/ directory. Key pages:
- Installation — complete setup guide
- Django admin integration —
DjangoQLSearchMixinand admin search modes - Language reference — query syntax, operators, and examples
- Schema & custom fields — restrict searchable models/fields, custom search fields
- Derived fields — date/time parts, relation aggregates, custom search logic
- Outside the admin —
DjangoQLQuerySetandapply_search() - Multi-line queries —
Shift+Enternewline support - Pretty-print / formatting —
format_query()and the format endpoint - Query breakdown (counts) — per-branch record counts with
explain() - Syntax highlighting — tokenizer + overlay, bring-your-own colours/editor
- Completion widget — standalone JS widget outside the admin
- Example project — runnable demo of all of the above
- Internationalization — i18n support and supplied locales
Example project
A runnable demo of all the features above (on a richly related dataset) lives in
example_project/. See its
README for details. Quick start:
cd example_project
uv run python manage.py migrate
uv run python manage.py seed_demo # lots of related demo data
uv run python manage.py createsuperuser # optional, for the admin
uv run python manage.py runserver
Then open http://127.0.0.1:8000/ (search demo — auto-completion, multi-line, highlighting, Format, Explain counts) or http://127.0.0.1:8000/admin/ (admin with completion + multi-line + the highlight overlay).
What it looks like
Running a query — live syntax highlighting and results:
The Format button re-indents a query (syntax highlighting throughout):
Explain counts breaks an empty result down per sub-expression, so you can see
where the data runs out — here each side matches ~500 rows but their and
matches none:
Syntax errors are pinpointed in the query box:
Supported by
This fork is graciously supported and maintained by iplweb.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file djangoql_iplweb-0.24.0.tar.gz.
File metadata
- Download URL: djangoql_iplweb-0.24.0.tar.gz
- Upload date:
- Size: 258.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
444267e6adaf0ff4555e24e168cb8ee0708cbca4f07a7722c89d130e21a1e9fd
|
|
| MD5 |
8fd6e4566a570682faa4cfc364dc5b83
|
|
| BLAKE2b-256 |
3bcc9296b074a469a707873e584b2ec50ef568cb05c1ffcc2add82e43d0803f9
|
File details
Details for the file djangoql_iplweb-0.24.0-py3-none-any.whl.
File metadata
- Download URL: djangoql_iplweb-0.24.0-py3-none-any.whl
- Upload date:
- Size: 295.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34cf40c6838aa472d4c49b015cf1f8815e113b678e183b9ac2a16b543e1d239d
|
|
| MD5 |
4517cb240ccaa72c0e1f8dde39399adf
|
|
| BLAKE2b-256 |
137ca4c515eebfe9d6e3d60a4ee42c01425b2dd1ad6b2905581fa3c654686da4
|