{"id":23573,"library":"django-extra-settings","title":"django-extra-settings","description":"Manage typed extra settings via Django admin. Current version 0.14.1, release cadence irregular with major upgrades for Django/Python support.","status":"active","version":"0.14.1","language":"python","source_language":"en","source_url":"https://github.com/fabiocaccamo/django-extra-settings","tags":["django","admin","settings","extra-settings","configuration"],"install":[{"cmd":"pip install django-extra-settings","lang":"bash","label":"Default install"}],"dependencies":[{"reason":"Required framework","package":"django","optional":false}],"imports":[{"note":"Module is 'extra_settings', not 'django_extra_settings'","wrong":"from django_extra_settings import settings","symbol":"extra_settings","correct":"from extra_settings import extra_settings"},{"note":"Setting model is in models submodule","wrong":"from extra_settings import Setting","symbol":"Setting","correct":"from extra_settings.models import Setting"}],"quickstart":{"code":"import os\nos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')\nimport django\ndjango.setup()\n\nfrom extra_settings.models import Setting\n# Create a string setting with a default value\nobj, created = Setting.objects.get_or_create(\n    name='MY_SETTING',\n    defaults={\n        'value_type': 'string',\n        'description': 'My custom setting',\n        'default_value': 'default',\n        'enabled': True\n    }\n)\nprint(f\"Setting MY_SETTING = {obj.current_value}\")\n\n# Or use the getter\nfrom extra_settings import extra_settings\nprint(extra_settings.get_setting('MY_SETTING', default='fallback'))","lang":"python","description":"Quickstart example: create and retrieve a setting."},"warnings":[{"fix":"Update to Python >=3.10 and Django >=4.2","message":"Dropped Python 3.8/3.9 and Django 3.x support in v0.13.0. Upgrade to Python 3.10+/Django 4.2+.","severity":"breaking","affected_versions":"<0.13.0"},{"fix":"If you have custom migrations referencing jsonfield, update to use Django's JSONField.","message":"Removed jsonfield dependency; now uses built-in models.JSONField. Existing migrations may need update.","severity":"breaking","affected_versions":"<=0.12.0"},{"fix":"Use Setting.objects.clear_cache() or extra_settings.clear_cache() after manual changes.","message":"The cached value of settings is only cleared on app ready; if you change a setting manually in code, you must clear cache.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Upgrade to v0.13.0+ or keep jsonfield in requirements if sticking with older version.","cause":"As of v0.13.0, the jsonfield dependency was removed and replaced with models.JSONField. If your requirements pin an old version, you get this error.","error":"ModuleNotFoundError: No module named 'jsonfield'"},{"fix":"Run 'python manage.py migrate extra_settings' to apply migrations.","cause":"Missing database migration for the extra_settings app.","error":"You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): extra_settings."},{"fix":"Use 'from extra_settings import extra_settings' (lowercase) then extra_settings.get_setting(...).","cause":"Trying to use extra_settings.get_setting but confused the import (maybe imported the class instead of the module).","error":"AttributeError: 'Settings' object has no attribute 'get_setting'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}