Package: django-admin-bootstrappedx
A Django admin theme using Bootstrap. It doesn’t need any kind
of modification on your side, just add it to the installed apps.RequirementsDjango>=2.2InstallationDownload it from PyPi withpip installdjango-admin-bootstrappedAdd into theINSTALLED_APPSbefore'django.contrib.admin':'django_admin_bootstrapped',Have fun!ConfigurationFor a full bootstrap3 experience you may want to use a custom renderer for the fields.
There’s one available in tree that requires thedjango-bootstrap3application installed.
You have to add to your project settings file:DAB_FIELD_RENDERER = 'django_admin_bootstrapped.renderers.BootstrapFieldRenderer'Messageswill havealert-infotag by default,
so you may want to add Bootstrap 3 tags for different message levels to make them styled appropriately.
Add to your project settings file:from django.contrib import messages

MESSAGE_TAGS = {
            messages.SUCCESS: 'alert-success success',
            messages.WARNING: 'alert-warning warning',
            messages.ERROR: 'alert-danger error'
}Now, adding messages like this:messages.success(request, "My success message")
messages.warning(request, "My warning message")
messages.error(request, "My error message")will result into this:GoodiesAdd custom html to the change form of any model with a templateYou can inject custom html on top of any change form creating a template
namedadmin_model_MODELNAME_change_form.htmlinto the application’s
template folder. Eg:myapp/templates/myapp/admin_model_mymodelname_change_form.htmlorproject/templates/myapp/admin_model_mymodelname_change_form.html.Inline sortableYou can add drag&drop sorting capability to any inline with a couple of
changes to your code.First, add apositionfield in your model (and sort your model
accordingly), for example:class TestSortable(models.Model):
    that = models.ForeignKey(TestMe)
    position = models.PositiveSmallIntegerField("Position")
    test_char = models.CharField(max_length=5)

    class Meta:
        ordering = ('position', )Then in your admin.py create a class to handle the inline using thedjango_admin_bootstrapped.admin.models.SortableInlinemixin, like
this:from django_admin_bootstrapped.admin.models import SortableInline
from models import TestSortable

class TestSortable(admin.StackedInline, SortableInline):
    model = TestSortable
    extra = 0You can now use the inline as usual. See the screenshots section to see what the result
will look like.This feature was brought to you byKyle Bock. Thank you Kyle!XHTML CompatibleCompatible with both html and xhtml. To enable xhtml for your django app
add the following to your settings.py: DEFAULT_CONTENT_TYPE =
‘application/xhtml+xml’Generic lookups in adminAll that needs to be done is change the admin widget with either
formfield_overrides like this:from django_admin_bootstrapped.widgets import GenericContentTypeSelect

class SomeModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.ForeignKey: {'widget': GenericContentTypeSelect},
    }Or if you want to be more specific:from django_admin_bootstrapped.widgets import GenericContentTypeSelect

class SomeModelAdmin(admin.ModelAdmin):
    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name == 'content_type':
            kwargs['widget'] = GenericContentTypeSelect
        return super(SomeModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)If you decide on usingformfield_overridesyou should be aware of
its limitations with relation
fields.This feature (and many more) was brought to you byJacob
Magnusson. Thank you Jacob!ContributingEvery code, documentation and UX contribution is welcome.Found an issue? Report it in the bugtracker!Have some free time? Help fixing an already filed issue, just remember to work on a separate branch please.ScreenshotsHomepageList view with filters in dropdownChange form view