django-dynamic-preferences
Dynamic global and instance settings for your django project
What it is and what it does
django-dynamic-preferences is a Django app that moves application settings from static configuration files into a database, enabling them to be modified at runtime without restarting the server. It handles both global preferences and per-instance settings through a declarative registration system, automatically serializing and deserializing preference values. The package integrates with Django's admin interface and caching mechanisms, making it practical for applications where settings need to change frequently or vary by user or tenant.
The package is designed for situations where a static settings.py file is insufficient—particularly when you need per-user customization or the ability to update configuration on the fly. Instead of adding columns to a profile table for each new setting, you register preferences declaratively, and the package handles storage and retrieval. It has been in production use since 2014 and is tested against Python 3.7, 3.8, 3.9, 3.10 and 3.11 with django 3.2 and 4.2.
Use it for:
- Store per-user feature flags or display preferences that can be toggled in the admin interface without restarting.
- Manage global application settings that need to be updated at runtime without server restart.
- Build multi-tenant applications where each tenant or organization has its own preference set.
- Implement user-customizable site settings editable via admin or custom forms.
- Leverage django caching mechanisms to avoid repeated database hits for frequently accessed settings.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Stores and retrieves application settings dynamically in a Django database, allowing per-user or per-instance preferences to be updated without server restart.
Yes, if you need runtime-configurable settings in Django and can tolerate aging maintenance. The package is stable (Production/Stable status), has no known vulnerabilities, and low install friction. However, verify compatibility with your Django version before adopting, given the 581-day gap since the last release.
Install
django-dynamic-preferences on PyPI
pip
pip install django-dynamic-preferencesuv
uv add django-dynamic-preferencespoetry
poetry add django-dynamic-preferencesInstalling django-dynamic-preferences
Before you install
Low friction install with only two runtime dependencies (django and persisting_theory). Maintenance status is aging—last release was 581 days ago, though the repository remains active with a recent commit on 2026-01-22.
License in practice
BSD license is permissive, allowing commercial and private use with minimal restrictions.
Quickstart
pip install django-dynamic-preferences
import django_dynamic_preferences
# Register and access preferences through the package's API
Requires Django to be installed and configured; the package is a Django app and cannot function standalone.
Verify before relying
- Whether persisting_theory is a lightweight utility or introduces significant transitive dependencies.
- Whether the aging maintenance status (581 days since last release) affects compatibility with recent Django versions.
- How performance scales with large numbers of preferences or high-frequency preference lookups.
- Specific API entry points and usage patterns beyond what the description excerpt provides.
Package facts
| License | BSD (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — django, persisting_theory |
| Maintenance | aging — 581 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 161,890/month — #10,619 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_dynamic_preferences-1.17.0-py2.py3-none-any.whl
Keywords: django-dynamic-preferences
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
django-constanceDjango-constance lets you store and manage…
permissive · top 5,000 on PyPI
drf-extensionsProvides mixins, decorators, and utilities that…
permissive · top 5,000 on PyPI
django-split-settingsSplits Django settings across multiple files…
permissive · top 15,000 on PyPI
django-enumfieldsProvides Django model fields that store Python…
permissive · top 15,000 on PyPI
django-colorfieldAdds a color field to Django models with an…
permissive · top 5,000 on PyPI
django-soloDjango Solo provides a base model class and…
unclear · top 15,000 on PyPI
django-json-widgetProvides a rich JSON editor widget for Django's…
permissive · top 5,000 on PyPI
django-admin-toolsExtends Django's default admin interface with a…
permissive · top 15,000 on PyPI
django-flagsDjango-Flags provides a feature flag system for…
permissive · top 15,000 on PyPI
django-object-actionsAdds custom action buttons to Django admin…
permissive · top 5,000 on PyPI