Tabbed forms help you organize form fieldsets and inlines into tabs. Before reading further, take a look on the tabs in the demo app.
Tabs are based on mostly CSS/JS solution, therefore integration of tabs is simple and non intrusive - all your form handling will work the same as before.
To organize form into tabs you must:
Add suit_tabs parameter to your ModelAdmin class:
# (TAB_NAME, TAB_TITLE)
suit_tabs = (('general', 'General'), ('advanced', 'Advanced Settings'))
Add 'suit-tab suit-tab-TAB_NAME' to fieldset classes. Where TAB_NAME matches tab name you want to show inline in.
To use with inlines, specify same css classes in suit_classes parameter for inline classes
Full example:
from django.contrib import admin
from .models import Country
class CityInline(admin.TabularInline):
model = City
suit_classes = 'suit-tab suit-tab-cities'
class CountryAdmin(admin.ModelAdmin):
inlines = (CityInline,)
fieldsets = [
(None, {
'classes': ('suit-tab suit-tab-general',),
'fields': ['name', 'continent',]
}),
('Statistics', {
'classes': ('suit-tab suit-tab-general',),
'fields': ['area', 'population']}),
('Architecture', {
'classes': ('suit-tab suit-tab-cities',),
'fields': ['architecture']}),
]
suit_tabs = (('general', 'General'), ('cities', 'Cities'), ('flag', 'Flag'),
('info', 'Info on tabs'))
# Read about form includes in next section
suit_templates = (
('admin/examples/country/tab_disclaimer.html', 'middle', 'cities'),
('admin/examples/country/tab_flag.html', '', 'flag'),
('admin/examples/country/tab_info.html', '', 'info'),
)
admin.site.register(Country, CountryAdmin)
Same way you can organize any HTML into tabs, just wrap it in previously mentioned CSS classes:
<div class="suit-tab suit-tab-TAB_NAME">...</div>
Preview:
Django Suit provides handy shortcut to include templates into forms.
See Form Includes