Skip to Content
FeaturesModulesFastAPI ORMConfiguration

Configuration

The FastAPI ORM Generator is configured via FastAPIConfig Pydantic model or CLI arguments.

CLI Arguments

python manage.py generate_fastapi [apps...] [options]
ArgumentDescriptionDefault
appsApps to process (positional)All apps
--output-dir, -oOutput directoryfastapi_orm/
--format, -fORM formatsqlmodel
--dry-runPreview without writingfalse
--verbose, -vVerbose outputfalse

Generation Options

ArgumentDescriptionDefault
--no-crudSkip CRUD repositoriesfalse
--no-schemasSkip Pydantic schemasfalse
--no-database-configSkip database.pyfalse
--include-alembicGenerate Alembic configfalse
--sync-modeGenerate sync codefalse

Filtering Options

ArgumentDescription
--exclude-appsApps to exclude
--exclude-modelsModels to exclude (format: app.Model)

PostgreSQL Options

ArgumentDescriptionDefault
--no-jsonbUse JSON instead of JSONBfalse
--no-arrayDon’t use native ARRAYfalse

Programmatic Configuration

from django_cfg.modules.django_fastapi import FastAPIConfig config = FastAPIConfig( # Core enabled=True, output_dir="src/orm/", format="sqlmodel", # Generation include_crud=True, include_schemas=True, include_database_config=True, include_alembic=False, async_mode=True, # App Selection apps=["users", "products", "orders"], exclude_apps=["admin", "auth"], exclude_models=["users.Session"], # PostgreSQL use_jsonb=True, use_array_fields=True, use_uuid_type=True, # Naming schema_suffix="Schema", repository_suffix="Repository", add_docstrings=True, add_type_hints=True, )

Configuration Reference

Core Options

OptionTypeDefaultDescription
enabledboolFalseEnable/disable module
output_dirstr"fastapi_orm/"Output directory path
formatLiteral"sqlmodel"ORM format: sqlmodel, pydantic, sqlalchemy

Generation Options

OptionTypeDefaultDescription
include_crudboolTrueGenerate async CRUD repositories
include_schemasboolTrueGenerate Pydantic schemas
include_database_configboolTrueGenerate database.py setup
include_alembicboolFalseGenerate Alembic configuration
async_modeboolTrueGenerate async code (vs sync)

App Selection

OptionTypeDefaultDescription
appslist[str][]Apps to process (empty = all)
exclude_appslist[str]See belowApps to exclude
exclude_modelslist[str][]Models to exclude (app.Model)

Default excluded apps:

[ "admin", "auth", "contenttypes", "sessions", "messages", "staticfiles", "sites", "django_celery_beat", "django_celery_results" ]

PostgreSQL Options

OptionTypeDefaultDescription
use_jsonbboolTrueUse JSONB for JSONField
use_array_fieldsboolTrueUse native ARRAY type
use_uuid_typeboolTrueUse native UUID type

Naming Conventions

OptionTypeDefaultDescription
schema_suffixstr"Schema"Suffix for Pydantic schemas
repository_suffixstr"Repository"Suffix for CRUD classes
add_docstringsboolTrueAdd docstrings to code
add_type_hintsboolTrueAdd comprehensive type hints

Configuration Examples

Minimal Setup

config = FastAPIConfig( output_dir="api/models/", include_crud=False, include_database_config=False, )

Production Setup

config = FastAPIConfig( output_dir="src/orm/", apps=["core", "users", "products", "orders"], exclude_models=["users.TempSession"], use_jsonb=True, use_array_fields=True, async_mode=True, add_docstrings=True, )

MySQL/SQLite Setup

# Disable PostgreSQL-specific features config = FastAPIConfig( use_jsonb=False, use_array_fields=False, use_uuid_type=False, )

Sync Mode (Legacy)

config = FastAPIConfig( async_mode=False, # Generates sync Session instead of AsyncSession )

Environment Variables

The generated database.py reads:

DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/mydb

The generator automatically converts:

  • postgres:// to postgresql+asyncpg:// (async mode)
  • postgres:// to postgresql:// (sync mode)

Workflow Integration

Makefile

orm: python manage.py generate_fastapi migrate: ## Run migrations and regenerate ORM python manage.py migrate python manage.py generate_fastapi

CI/CD

# .github/workflows/orm.yml on: push: paths: - '**/models.py' jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: python manage.py generate_fastapi - run: | git add orm/ git commit -m "chore: regenerate ORM" || exit 0 git push

TAGS: configuration, settings, options, postgresql DEPENDS_ON: [overview]

Last updated on