Admin additions.
Project description
There are a few things about the django admin that get me down. Here are solutions to those, all bundled up together.
Installation
Add 'admin_additions' to you settings.INSTALLED_APPS.
Then configure the additions you want to use. The default settings are shown:
ADMIN_ADDITIONS = { 'RETURN_TO_FILTERED_CHANGELIST': False, 'SAVE_ON_TOP': True, 'LIST_SELECT_RELATED': False, 'FULLY_DYNAMIC_FORMSETS': True }
Settings
RETURN_TO_FILTERED_CHANGELIST
When editing an object, you usually want to revert back to the filtered view from whence you came.
This is a monkey-patch that supplements the normal change_view method on the ModelAdmin base class, and ensures that it returns after a POST back to the referring view.
This method of returning to the filtered view after submitting a form in an admin change view is based largely upon Snippet 2531 <http://djangosnippets.org/snippets/2531/>.
SAVE_ON_TOP
Should be the default: display the save toolbar on the top of every change_view.
FULLY_DYNAMIC_FORMSETS
Sets the extra value on InlineModelAdmin to 0, so you just use the addition button instead of having any empty formsets.
Patching functions
patch_model_admin(model, patch_function)
Patch an installed ModelAdmin. This includes unregistering, patching and then re-registering. You may pass in a model, or a string of the form “app_label.ModelName”, and a function that will take and patch a ModelAdmin class.
If you create a new class based on the passed in class, then you may return it: that will then be used within the re-registration. If you simply patch the existing class, you can return nothing, and the patched original class will be used.
from admin_additions.patchers import patch_model_admin def patcher_function(model_admin): # Do stuff here. model_admin.form = MyClassyForm return model_admin # optional: you may patch in-place patch_model_admin(MyModel, patcher_function)
add_inlines(model, *inlines)
A simple/common case of patching a ModelAdmin - adding a new inline:
from django.contrib import admin from admin_additions.patchers import add_inlines from models import Foo class FooInline(admin.StackedInline): model = Foo add_inlines('bar.Bar', FooInline)
You may pass multiple inlines.
You may also pass in any combination of models or admin inlines: if a model is received, it will create a StackedInline for that model.
add_actions(model, *actions)
Like for inlines, but add an action.
@patch_admin(model)
A decorator, that can decorate a function to be patched.
from admin_additions.patchers import patch_admin @patch_admin(model) def patcher_function(model_admin): model_admin.form = MyClassyForm
This syntax is terser than the patch_model_admin function above.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-admin-additions-1.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cf91ac8ae50d0d61f8e5fa0703ec2c5f3c7f3b1b36c2182b1420968aa2bec4b |
|
MD5 | b78779f5be03237497e7672e0d49cbf0 |
|
BLAKE2b-256 | a42dc23b5b38a109a2b18892395f93dbc9e92776edcac9fab32d9a1f96fe5bc6 |