Skip to main content
=============================
django-ordered-field
=============================

.. image:: https://badge.fury.io/py/django-ordered-field.svg
:target: https://badge.fury.io/py/django-ordered-field

.. image:: https://travis-ci.org/kimgea/django-ordered-field.svg?branch=master
:target: https://travis-ci.org/kimgea/django-ordered-field

.. image:: https://codecov.io/gh/kimgea/django-ordered-field/branch/master/graph/badge.svg
:target: https://codecov.io/gh/kimgea/django-ordered-field

A django field to make it easy to order your model instances. If you have made an ordered list and you change the position of the list item instance then all the other list iteminstances belonging to that list has their position automatically updated to keep the list ordered without holes and list items with duplicate positions.
``OrderedField field`` is a global ordering field for the entire table.
``OrderedCollectionField`` order instances with respect to one or more other fields on the instance.


Requires
--------
* python>=3.6
* django>=2.0

Documentation
-------------

The full documentation is at https://django-ordered-field.readthedocs.io.

Quickstart
----------

Install django-ordered-field::

pip install git+https://github.com/kimgea/django-ordered-field.git


In your models.py add the field you want ``OrderedField`` or ``OrderedCollectionField``:

.. code-block:: python

from django_ordered_field import OrderedField

class YourModel(models.Model):
name = models.CharField(max_length=100)
order = OrderedField()

And your ready to go.

Features
--------

* ``OrderedField`` will keep correct ordering between all instances in the enire table
* ``OrderedCollectionField`` can seperate the table in different collection based on one or more columns and keep order in each collection
* ``update_auto_now`` will update all other fields containing auto_now=True with django.utils.timezone.now if it is set to True
* ``extra_field_updates`` can be used to update other fields when their order is changed
* ``self_updates_on_collection_change`` can be used to update self (current instance) when it changes collection. Setting ``self_updates_on_collection_change_like_regular`` to True will make it use the values from the extra_field_updates

Limitations
--------

* Must user model.save(). queryset methods does not work
* Order field cant be unique or in an uniqu_togheter constraint
* After a position has been updated, other members of the collection are updated using a single SQL UPDATE statement, this means the save method of the other instances won't be called. As a partial work-around use the ``update_auto_now``, ``extra_field_updates`` and the ``self_updates_on_collection_change`` functionalities.


Credits
-------

Based on django-positions (it did not work for django 2 at the time):

* django-positions_

.. _django-positions: https://github.com/jpwatts/django-positions

Tools used in rendering this package:

* Cookiecutter_
* `cookiecutter-djangopackage`_

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage




History
-------

0.1.0 (2018-04-28)
++++++++++++++++++

* First release on PyPI.


Metadata

Release files for django-ordered-field 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-ordered-field 1.0.0
File Size Uploaded
django-ordered-field-1.0.0.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-ordered-field 1.0.0
File Interpreter ABI Platform
django_ordered_field-1.0.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 17.5 kB

Release files / django-ordered-field-1.0.0.tar.gz

Download URL django-ordered-field-1.0.0.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
91c25fca0ad31ee678ee139708b1038e8d30b432c967f709a2d146d24484e64c
BLAKE2b-256 checksum
How to use checksums
0e170c82444e9995a85b94082d096d700025c18c670bc882e1250bc4197d8abd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5

Release files / django_ordered_field-1.0.0-py2.py3-none-any.whl

Download URL django_ordered_field-1.0.0-py2.py3-none-any.whl
Size 8.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
9170bb44327df70415f484b38cb11fd97bb2c022fe3a371e3141afeb666e11f4
BLAKE2b-256 checksum
How to use checksums
62a6bbdc4bba974f5dffb37a1c0c53ed611f109005a5d52f521d2767a36701f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page