skillfed

django-dynamic-preferences

Dynamic global and instance settings for your django project

django-dynamic-preferences v1.17.0 161.9K downloads/30d#10,619 on PyPI360
Permissive license BSD AGING released

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-preferences

uv

uv add django-dynamic-preferences

poetry

poetry add django-dynamic-preferences

Installing 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

Development Status :: 5 - Production/StableFramework :: DjangoIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseNatural Language :: EnglishProgramming Language :: Python :: 3

Tags

django dynamic settingsper-user preferences djangodjango settings without restartdjango admin settings managementconfigurable django preferencesdjango settings database storageruntime django configuration
django-appconfiguration-managementper-user-settings

More Application Frameworks packages