Quick Start
First time?
Start with Installation to add django-sysconfig to your project, run migrations, and wire up the admin URL. Come back here once that's done.
Define your config schema
Create a sysconfig.py file inside any installed Django app:
# myapp/sysconfig.py
from django_sysconfig import register_config, Section, fields, validators
@register_config("myapp")
class MyAppConfig:
class General(Section):
label = "General Settings"
site_name = fields.String(
label="Site Name",
default="My App",
validators=[validators.NotEmptyValidator()]
)
maintenance_mode = fields.Boolean(
label="Maintenance Mode",
default=False
)
max_items = fields.Integer(
label="Max Items Per User",
default=100,
validators=[validators.RangeValidator(min_value=1, max_value=10_000)],
)Django autodiscovers this file on startup — no registration needed beyond the decorator.
Read values in your code
from django_sysconfig import config
site_name = config.get("myapp.general.site_name") # str → "My App"
maintenance = config.get("myapp.general.maintenance_mode") # bool → False
max_items = config.get("myapp.general.max_items") # int → 100Values are typed — max_items is always an int, not "100". Caching is automatic.
Edit values in the admin UI
Start your dev server and visit /admin/config/. Log in with any staff account.

You'll see your app listed with all its sections and fields, pre-populated with defaults. Change a value and hit Save — it takes effect immediately, no redeploy needed.
TIP
The Django admin index page has a "Manage System Configuration" button at the top that links here directly.

You're done
From here, explore:
- Getting Started — a real-world walkthrough with multiple apps and field types
- Defining Configuration — all field options, section options, and design tips
- Reading & Writing Values —
set,set_many,section,all, and more - Field Types — all seven types with examples
- Validators — all 20 built-in validators