Overview
tests | |
---|---|
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:
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: