Skip to content

IndustriaTech/django-orderedmodel

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-orderedmodel -- orderable models for Django

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

This is a clone of original django-ordermodel, with added new features

How to use

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

  1. Add django-ordered model to your enviroment
  • With pip
    • pip install git+git://github.com/IndustriaTech/django-orderedmodel.git.
  • Without pip
    • git clone git://github.com/IndustriaTech/django-orderedmodel.git.
    • Copy (or, even better, symlink) orderedmodel directory to your Django project.
  1. Add 'orderedmodel' to INSTALLED_APPS in your settings.py.
  2. Ensure that your project is using django.contrib.staticfiles to serve static content
  3. Derive your Model from orderedmodel.models.OrderedModel.
  4. Derive your ModelAdmin from orderedmodel.models.OrderedModelAdmin.
  5. 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).

Example

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

models.py:

from django.db import models
from orderedmodel.models import OrderedModel

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

admin.py:

from django.contrib import admin
from orderedmodel.admin 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

Django versions

Current version of django-orderedmodel requires Django-1.4+.

Django-MPTT

Now there is a basic supoort of django-mptt. If you want to make simple reordering in admin and to use mptt for tree structure, you can use orderedmodel.mptt_models.OrderedMPTTModel and orderedmodel.mptt_admin.OrderedMPTTModelAdmin instead of orderedmodel.models.OrderedModel and orderedmodel.admin.OrderedModelAdmin

About

Orderable models for Django

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 83.9%
  • JavaScript 16.1%