django-admin-utils

Utility code and patterns.


License
BSD-2-Clause
Install
pip install django-admin-utils==2.0.4

Documentation

Overview

tests
Travis-CI Build Status Requirements Status
Coverage Status Coverage Status
package

Utility code and patterns.

  • Free software: BSD 2-Clause License

Installation

pip install django-admin-utils

You can also install the in-development version with:

pip install https://github.com/ionelmc/django-admin-utils/archive/master.zip

Documentation

Terse admin.py

from django.contrib import admin
from admin_utils import register, inline

from .models import MyModel, OtherModel

@register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    inlines = inline(OtherModel),

If you want custom admin sites:

customsite = admin.AdminSite()

@register(MyModel, site=customsite)
class MyModelAdmin(admin.ModelAdmin):
    inlines = inline(OherModel),

Mock admin (mount your views in admin using model wrappers)

Have you ever wanted a page in the admin that appears in the app list but you don't have any models ? Now you can have that without patching up the admin Site or the templates. Just put this in your admin.py:

from django.urls import path
from admin_utils import make_admin_class

make_admin_class(
    app_label="test_app",
    model_name="Test1",
    urls=[
        path('', views.root, name='test_app_test1_changelist'),
        path('level1/', views.level1, name='level-1'),
        path('level1/level2/', views.level2, name='level-2'),
    ],
)

To use different admin site:

make_admin_class(
    site=customsite,
    app_label="test_app",
    model_name="Test1",
    urls=[
        path('', views.root, name='test_app_test1_changelist'),
        path('level1/', views.level1, name='level-1'),
        path('level1/level2/', views.level2, name='level-2'),
    ],
)

Alternatively you can mount a single view with a decorator:

from admin_utils import register_view

@register_view(
    site=customsite,
    app_label="test_app",
    model_name="Test1",
)
def root(request):
    ...

Admin mixins

admin_utils.mixins.FoldableListFilterAdminMixin

Adds nice filter toggling with cookie support. Largely based on django-foldable-list-filter but without the transition effect and no pictures.

Example:

from admin_utils.mixins import FoldableListFilterAdminMixin

class MyModelAdmin(FoldableListFilterAdminMixin, admin.ModelAdmin):
    pass

Looks like this:

Screenshort of FoldableListFilterAdminMixin

admin_utils.mixins.FullWidthAdminMixin

Make the changelist expand instead of having the width of the windows and having that nasty inner scrollbar. You never gonna notice that if your table is long !

Example:

from admin_utils.mixins import FoldableListFilterAdminMixin

class MyModelAdmin(FoldableListFilterAdminMixin, admin.ModelAdmin):
    pass

You probably didn't even notice you had this problem:

Screenshort of FullWidthAdminMixin