AdminSite ========= The ``AdminSite`` is the central registry for models and custom admin pages. It mirrors Django's ``AdminSite`` pattern. Default site ------------ A global ``site`` instance is exported from the package: .. code-block:: python from fastapi_mongo_admin import site, ModelAdmin site.register(Product, ProductAdmin) Custom AdminSite ---------------- Create a dedicated site for branding, template overrides, or multi-tenant apps: .. code-block:: python from pathlib import Path from fastapi_mongo_admin import AdminSite class EcommerceAdminSite(AdminSite): site_header = "Ecommerce Admin" site_title = "Shop Manager" index_title = "Store administration" admin_site = EcommerceAdminSite(template_dirs=[Path("myapp/templates")]) Branding attributes ~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 * - Attribute - Default - Used in * - ``site_header`` - ``"FastAPI Mongo Admin"`` - Page header on all admin pages * - ``site_title`` - ``"Admin"`` - Browser title suffix * - ``index_title`` - ``"Site administration"`` - Admin index page heading Registering models ------------------ Single model ~~~~~~~~~~~~ .. code-block:: python site.register(Product, ProductAdmin) Multiple models with the same admin class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: python site.register([Category, Brand], CatalogAdmin) Inline options ~~~~~~~~~~~~~~ Pass options as keyword arguments to override ``ModelAdmin`` attributes: .. code-block:: python site.register( Product, ProductAdmin, list_display=["name", "price"], list_per_page=50, ) ``collection_name`` is required — either on the ``ModelAdmin`` class or as a registration option. Duplicate collection names raise ``ValueError``. Registering custom views ------------------------ Add pages outside the standard CRUD flow: .. code-block:: python from fastapi import Request from fastapi.responses import HTMLResponse async def reports(request: Request) -> HTMLResponse: return HTMLResponse("