Integrate SmartBase Admin into Your Django App
This page demonstrates how to set up django-smartbase-admin
with models in your Django app. We will show configuration and show the result using actual model examples: Category
, Manufacturer
, and Product
.
SmartBase Admin allows for customizable admin panels, inline relationships, and clean UI navigation — all defined in a structured sb_admin.py
file.
Step 1: Create sb_admin.py
In your app (e.g. catalog/
), create a file named sb_admin.py
.
This file is used to register your models with the SmartBase admin and define how they appear in the UI.
Code: sb_admin.py
for models of Blog app
Define inlines
catalog/sb_admin.py
class ProductImageInline(SBAdminTableInline):
model = ProductImage
fields = ("image", "alt_text")
extra = 1
You can learn more about inlines and different inline types in 🔗 Inlines section.
💡Example #1: Product admin
- Code
- Result - List
- Result - Detail
catalog/sb_admin.py
@admin.register(Product, site=sb_admin_site)
class ProductSBAdmin(SBAdmin):
model = Product
inlines = [ProductImageInline]
sbadmin_list_display = (
"name",
"sku",
SBAdminField(name="price", title="Price"),
SBAdminField(name="is_active", title="Active"),
"manufacturer",
)
search_fields = ["name", "sku"]
list_filter = ["is_active"]
fieldsets = [
(
"Appearance",
{
"fields": [
"name",
"description",
"price",
]
},
),
(
"Base settings",
{
"classes": [DETAIL_STRUCTURE_RIGHT_CLASS], # Fieldset Layout class
"fields": [
"is_active",
"slug",
"sku",
"categories",
"manufacturer",
],
},
),
]
💡Example #2: Category admin
- Code
- Result - List
- Result - Detail
catalog/sb_admin.py
@admin.register(Category, site=sb_admin_site)
class CategorySBAdmin(SBAdmin):
model = Category
sbadmin_list_display = ("name", "slug", "parent")
search_fields = ["name"]
ordering = ["name"]
fieldsets = [
(
None,
{
"fields": ["name", "slug", "image", "parent"]
},
)
]
💡Example #3: Manufacturer admin
- Code
- Result - List
- Result - Detail
catalog/sb_admin.py
@admin.register(Manufacturer, site=sb_admin_site)
class ManufacturerSBAdmin(SBAdmin):
model = Manufacturer
sbadmin_list_display = ("name",)
search_fields = ["name"]
fieldsets = [
(
None,
{
"fields": ["name", "logo"]
},
)
]