Orderable model and admin
Project description
Make models orderable in the Admin.
Included:
Abstract base Model
Admin class
Inline admin class
Admin templates
Installation
Grab from the PyPI:
pip install django-orderable
Add to your INSTALLED_APPS:
... 'orderable', ...
Subclass the Orderable class:
from orderable.models import Orderable class Book(Orderable): ...
Note: If your subclass of Orderable has a Metaclass then make sure it subclasses the Orderable one so the model is sorted by sort_order.
** Also Note:** Saving orderable models invokes a fair number of queries and in order to avoid race conditions should be run in a transaction. If you’re using django >= 1.6 we recommend you set DATABASES[‘default’][‘ATOMIC_REQUESTS’] = True in your settings, if you’re not yet on django 1.6, we recommend use of TransactionMiddleware.
Subclass the appropriate Orderable admin classes:
from orderable.admin import OrderableAdmin, OrderableTabularInline class SomeInlineClass(OrderableTabularInline): ... class SomeAdminClass(OrderableAdmin): list_display = ('__unicode__', 'sort_order_display') ...
You need jQuery 1.2+ and jQuery UI 1.5+ available in the Admin for the actual moveable UI. You can either override the base admin template or add them in a Media class:
class SomeAdminClass(OrderableAdmin): class Media: js = ( 'path/to/jquery.js', 'path/to/jquery.ui.js', )
Common Gotchas
Adding Orderable to Existing Models
You will need to populate the required sort_order field. Typically this is done by adding the field in one migration with a default of 0, then creating a data migration to set the value to that of its primary key:
for obj in orm['appname.Model'].objects.all(): obj.sort_order = obj.pk obj.save()
Multiple Models using Orderable
When multiple models inherit from Orderable the next() and previous() methods will look for the next/previous model with a sort order. However you’ll likely want to have the various sort orders determined by a foreign key or some other predicate. The easiest way (currently) is to override the method in question.
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
Built Distribution
Hashes for django_orderable-3.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 510961a6f2fcd1107b25c7bc985cce1780bbbc5455bd1f9e7494432e06f3ede0 |
|
MD5 | d0f2d2423ad5c10d26510ec26f14116a |
|
BLAKE2b-256 | 0c5e4e8807b65fffb6d7f57ffa211192df6d103904c4adfa387ffc09e13d2669 |