Skip to main content

A Bootstrap theme for Django Admin

Project description

https://travis-ci.org/django-admin-bootstrapped/django-admin-bootstrapped.svg

PyPI version

A Django admin theme using Bootstrap. It doesn’t need any kind of modification on your side, just add it to the installed apps.

Requirements

  • Django >=2.2

Installation

  1. Download it from PyPi with pip install django-admin-bootstrapped

  2. Add into the INSTALLED_APPS before 'django.contrib.admin':

'django_admin_bootstrapped',
  1. Have fun!

Configuration

For a full bootstrap3 experience you may want to use a custom renderer for the fields. There’s one available in tree that requires the django-bootstrap3 application installed. You have to add to your project settings file:

DAB_FIELD_RENDERER = 'django_admin_bootstrapped.renderers.BootstrapFieldRenderer'

Messages will have alert-info tag 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:

https://i.imgur.com/SQNMZZE.png

Goodies

Add custom html to the change form of any model with a template

You can inject custom html on top of any change form creating a template named admin_model_MODELNAME_change_form.html into the application’s template folder. Eg: myapp/templates/myapp/admin_model_mymodelname_change_form.html or project/templates/myapp/admin_model_mymodelname_change_form.html.

Inline sortable

You can add drag&drop sorting capability to any inline with a couple of changes to your code.

First, add a position field 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 the django_admin_bootstrapped.admin.models.SortableInline mixin, like this:

from django_admin_bootstrapped.admin.models import SortableInline
from models import TestSortable

class TestSortable(admin.StackedInline, SortableInline):
    model = TestSortable
    extra = 0

You 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 by Kyle Bock. Thank you Kyle!

XHTML Compatible

Compatible 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 admin

All 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 using formfield_overrides you should be aware of its limitations with relation fields.

This feature (and many more) was brought to you by Jacob Magnusson. Thank you Jacob!

Contributing

Every 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.

Screenshots

Homepage

https://cloud.githubusercontent.com/assets/12932/6967318/d7064abe-d95e-11e4-91bc-6de527550557.png

List view with filters in dropdown

https://cloud.githubusercontent.com/assets/12932/6967319/d71a9c6c-d95e-11e4-86cf-47e8857582c1.png

Change form view

https://cloud.githubusercontent.com/assets/12932/6966950/98661ba6-d95c-11e4-8bb3-e4b18759115b.png

Project details


Release history Release notifications | RSS feed

This version

3.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-admin-bootstrappedx-3.1.tar.gz (382.1 kB view details)

Uploaded Source

Built Distribution

django_admin_bootstrappedx-3.1-py3-none-any.whl (407.1 kB view details)

Uploaded Python 3

File details

Details for the file django-admin-bootstrappedx-3.1.tar.gz.

File metadata

  • Download URL: django-admin-bootstrappedx-3.1.tar.gz
  • Upload date:
  • Size: 382.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/51.1.1 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5

File hashes

Hashes for django-admin-bootstrappedx-3.1.tar.gz
Algorithm Hash digest
SHA256 ff43b8b754dd5c7e048cc926baa8fdac10ca763c10656d0b1d60dbb45fdbfafc
MD5 8a5d312e9d63da5c5ddf9ec19661bdf3
BLAKE2b-256 592dbca24be4fd2b640c2b9a9753e11a2dc3ae82114862efbbaf45342e37cf46

See more details on using hashes here.

File details

Details for the file django_admin_bootstrappedx-3.1-py3-none-any.whl.

File metadata

  • Download URL: django_admin_bootstrappedx-3.1-py3-none-any.whl
  • Upload date:
  • Size: 407.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/51.1.1 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5

File hashes

Hashes for django_admin_bootstrappedx-3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b97829410fb3301af44bc6c477e9440ab117a2fd78434d53c396aea9c7f89af5
MD5 9a841fc84bd725eb63d1eb4ce26a5d57
BLAKE2b-256 5c0b1eec210337198a44667319b5b8cffaa402bcc6bc3add7c4ec272c0fadf70

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page