Orderable models for Django
Pull request Compare This branch is 5 commits ahead, 23 commits behind kirelagin:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


OrderedModel -- orderable models for Django

OrderedModel intends to help you create models which can be moved up\down (or left\right) with respect to each other.

How to use

There are a few simple steps to follow to make your models orderable:

  1. git clone git://github.com/kirelagin/django-orderedmodel.git.
  2. Copy (or, even better, symlink) orderedmodel directory to your Django project.
  3. (Optional) Add 'orderedmodel' to INSTALLED_APPS in your settings.py.
  4. Derive your Model from orderedmodel.OrderedModel.
  5. Derive your ModelAdmin from orderedmodel.OrderedModelAdmin.
  6. Add reorder field to yout ModelAdmin's list_display.
  7. Enjoy!

Now you can use order_by('order') in your query to get instances of your model in desired order (actually it is not neccessary to call order_by explicitly unless you have changed default ordering in your model's Meta).


Suppose you have a django app called testapp. You need an orderable model TestModel.


from django.db import models
from orderedmodel import OrderedModel

class TestModel(OrderedModel):
  name = models.CharField(max_length=30)


from django.contrib import admin
from orderedmodel import OrderedModelAdmin

from testapp.models import TestModel

class TestModelAdmin(OrderedModelAdmin):
  list_display = ['name', 'reorder']

admin.site.register(TestModel, TestModelAdmin)

Yep! Now if you create several instances of your model and look into admin site you'll see something like this:

Admin screenshot


  • Added support to Django 1.4.x (by Francesco Facconi - Immediatic)