{ "info": { "author": "Ben Firshman", "author_email": "ben@firshman.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "django-ordered-model\n====================\n\n[![Build Status](https://secure.travis-ci.org/bfirsh/django-ordered-model.png?branch=master)](https://travis-ci.org/bfirsh/django-ordered-model)\n[![PyPI version](https://badge.fury.io/py/django-ordered-model.svg)](https://badge.fury.io/py/django-ordered-model)\n[![codecov](https://codecov.io/gh/bfirsh/django-ordered-model/branch/master/graph/badge.svg)](https://codecov.io/gh/bfirsh/django-ordered-model)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)\n\ndjango-ordered-model allows models to be ordered and provides a simple admin\ninterface for reordering them.\n\nBased on https://djangosnippets.org/snippets/998/ and\nhttps://djangosnippets.org/snippets/259/\n\nSee our [compatability notes](#compatibility-with-django-and-python) for the appropriate version to use with older Django and Python releases.\n\nInstallation\n------------\n\n```bash\n$ python setup.py install\n```\n\nYou can use Pip:\n\n```bash\n$ pip install django-ordered-model\n```\n\nUsage\n-----\n\nAdd `ordered_model` to your `SETTINGS.INSTALLED_APPS`.\n\nInherit your model from `OrderedModel` to make it ordered:\n\n```python\nfrom django.db import models\nfrom ordered_model.models import OrderedModel\n\n\nclass Item(OrderedModel):\n name = models.CharField(max_length=100)\n\n class Meta(OrderedModel.Meta):\n pass\n```\n\nModel instances now have a set of methods to move them relative to each other.\nTo demonstrate those methods we create two instances of `Item`:\n\n```python\nfoo = Item.objects.create(name=\"Foo\")\nbar = Item.objects.create(name=\"Bar\")\n```\n\n### Swap positions\n\n```python\nfoo.swap(bar)\n```\n\nThis swaps the position of two objects.\n\n### Move position up on position\n\n```python\nfoo.up()\nfoo.down()\n```\n\nMoving an object up or down just makes it swap its position with the neighbouring\nobject directly above of below depending on the direction.\n\n### Move to arbitrary position\n\n```python\nfoo.to(12)\nbar.to(13)\n```\n\nMove the object to an arbitrary position in the stack. This essentially sets the\norder value to the specified integer. Objects between the original and the new\nposition get their order value increased or decreased according to the direction\nof the move.\n\n### Move object above or below reference\n\n```python\nfoo.above(bar)\nfoo.below(bar)\n```\n\nMove the object directly above or below the reference object, increasing or\ndecreasing the order value for all objects between the two, depending on the\ndirection of the move.\n\n### Move to top of stack\n\n```python\nfoo.top()\n```\n\nThis sets the order value to the lowest value found in the stack and increases\nthe order value of all objects that were above the moved object by one.\n\n### Move to bottom of stack\n\n```python\nfoo.bottom()\n```\n\nThis sets the order value to the highest value found in the stack and decreases\nthe order value of all objects that were below the moved object by one.\n\n### Updating fields that would be updated during save()\n\nFor performance reasons, the delete(), to(), below(), above(), top(), and bottom()\nmethods use Django's update() method to change the order of other objects that\nare shifted as a result of one of these calls. If the model has fields that\nare typically updated in a customized save() method, or through other app level\nfunctionality such as DateTimeField(auto_now=True), you can add additional fields\nto be passed through to update(). This will only impact objects where their order\nis being shifted as a result of an operation on the target object, not the target\nobject itself.\n\n```python\nfoo.to(12, extra_update={'modified': now()}\n```\n\n### Get the previous or next objects\n\n```python\nfoo.previous()\nfoo.next()\n```\n\nprevious() and next() get the neighbouring objects directly above of below\nwithin the ordered stack depending on the direction.\n\n## Subset Ordering\n\nIn some cases, ordering objects is required only on a subset of objects. For example,\nan application that manages contact lists for users, in a many-to-one/many relationship,\nwould like to allow each user to order their contacts regardless of how other users\nchoose their order. This option is supported via the `order_with_respect_to` parameter.\n\nA simple example might look like so:\n\n```python\nclass Contact(OrderedModel):\n user = models.ForeignKey(User, on_delete=models.CASCADE)\n phone = models.CharField()\n order_with_respect_to = 'user'\n```\n\nIf objects are ordered with respect to more than one field, `order_with_respect_to` supports\ntuples to define multiple fields:\n\n```python\nclass Model(OrderedModel)\n # ...\n order_with_respect_to = ('field_a', 'field_b')\n```\n\nIn a many-to-many relationship you need to use a separate through model which is derived from the OrderedModel.\nFor example, an application which manages pizzas with toppings.\n\nA simple example might look like so:\n\n```python\nclass Topping(models.Model):\n name = models.CharField(max_length=100)\n\n\nclass Pizza(models.Model):\n name = models.CharField(max_length=100)\n toppings = models.ManyToManyField(Topping, through='PizzaToppingsThroughModel')\n\n\nclass PizzaToppingsThroughModel(OrderedModel):\n pizza = models.ForeignKey(Pizza, on_delete=models.CASCADE)\n topping = models.ForeignKey(Topping, on_delete=models.CASCADE)\n order_with_respect_to = 'pizza'\n\n class Meta:\n ordering = ('pizza', 'order')\n```\n\nYou can also specify `order_with_respect_to` to a field on a related model. An example use-case can be made with the following models:\n\n```python\nclass ItemGroup(models.Model):\n user = models.ForeignKey(User, on_delete=models.CASCADE)\n general_info = models.CharField(max_length=100)\n\nclass GroupedItem(OrderedModel):\n group = models.ForeignKey(ItemGroup, on_delete=models.CASCADE)\n specific_info = models.CharField(max_length=100)\n order_with_respect_to = 'group__user'\n```\n\nHere items are put into groups that have some general information used by its items, but the ordering of the items is independent of the group the item is in.\n\nWhen you want ordering on the baseclass instead of subclasses in an ordered list of objects of various classes, specify the full module path of the base class:\n\n```python\nclass BaseQuestion(OrderedModel):\n order_class_path = __module__ + '.BaseQuestion'\n question = models.TextField(max_length=100)\n\n class Meta:\n ordering = ('order',)\n\nclass MultipleChoiceQuestion(BaseQuestion):\n good_answer = models.TextField(max_length=100)\n wrong_answer1 = models.TextField(max_length=100)\n wrong_answer2 = models.TextField(max_length=100)\n wrong_answer3 = models.TextField(max_length=100)\n\nclass OpenQuestion(BaseQuestion):\n answer = models.TextField(max_length=100)\n```\n\nCustom Manager and QuerySet\n-----------------\n```python\nfrom ordered_model.models import OrderedModelManager, OrderedModel\n\n\nclass ItemManager(OrderedModelManager):\n pass\n\n\nclass Item(OrderedModel):\n objects = ItemManager()\n```\n\nAdmin integration\n-----------------\n\nTo add arrows in the admin change list page to do reordering, you can use the\n`OrderedModelAdmin` and the `move_up_down_links` field:\n\n```python\nfrom django.contrib import admin\nfrom ordered_model.admin import OrderedModelAdmin\nfrom models import Item\n\n\nclass ItemAdmin(OrderedModelAdmin):\n list_display = ('name', 'move_up_down_links')\n\nadmin.site.register(Item, ItemAdmin)\n```\n\nFor a many-to-many relationship you need one of the following inlines.\n\n`OrderedTabularInline` or `OrderedStackedInline` just like the django admin.\n\nFor the `OrderedTabularInline` it will look like this:\n\n```python\nfrom django.contrib import admin\nfrom ordered_model.admin import OrderedTabularInline, OrderedInlineModelAdminMixin\nfrom models import Pizza, PizzaToppingsThroughModel\n\n\nclass PizzaToppingsThroughModelTabularInline(OrderedTabularInline):\n model = PizzaToppingsThroughModel\n fields = ('topping', 'order', 'move_up_down_links',)\n readonly_fields = ('order', 'move_up_down_links',)\n extra = 1\n ordering = ('order',)\n\n\nclass PizzaAdmin(OrderedInlineModelAdminMixin, admin.ModelAdmin):\n list_display = ('name', )\n inlines = (PizzaToppingsThroughModelTabularInline, )\n\n\nadmin.site.register(Pizza, PizzaAdmin)\n```\n\nFor the `OrderedStackedInline` it will look like this:\n\n```python\nfrom django.contrib import admin\nfrom ordered_model.admin import OrderedStackedInline, OrderedInlineModelAdminMixin\nfrom models import Pizza, PizzaToppingsThroughModel\n\n\nclass PizzaToppingsThroughModelStackedInline(OrderedStackedInline):\n model = PizzaToppingsThroughModel\n fields = ('topping', 'order', 'move_up_down_links',)\n readonly_fields = ('order', 'move_up_down_links',)\n extra = 1\n ordering = ('order',)\n\n\nclass PizzaAdmin(OrderedInlineModelAdminMixin, admin.ModelAdmin):\n list_display = ('name', )\n inlines = (PizzaToppingsThroughModelStackedInline, )\n\n\nadmin.site.register(Pizza, PizzaAdmin)\n```\n\nTest suite\n----------\n\nRequires Docker.\n\n```bash\n$ script/test\n```\n\nCompatibility with Django and Python\n-----------------------------------------\n\n|django-ordered-model version | Django version | Python version\n|-----------------------------|---------------------|--------------------\n| **3.3.x** | **2.x** | **3.4** and above\n| **3.2.x** | **2.x** | **3.4** and above\n| **3.1.x** | **2.x** | **3.4** and above\n| **3.0.x** | **2.x** | **3.4** and above\n| **2.1.x** | **1.x** | **2.7** to **3.6**\n| **2.0.x** | **1.x** | **2.7** to **3.6**\n\n\nMaintainers\n-----------\n\n * [Ben Firshman](https://github.com/bfirsh)\n * [Chris Shucksmith](https://github.com/shuckc)\n * [Sardorbek Imomaliev](https://github.com/imomaliev)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/bfirsh/django-ordered-model", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-ordered-model", "package_url": "https://pypi.org/project/django-ordered-model/", "platform": "", "project_url": "https://pypi.org/project/django-ordered-model/", "project_urls": { "Homepage": "http://github.com/bfirsh/django-ordered-model" }, "release_url": "https://pypi.org/project/django-ordered-model/3.3.0/", "requires_dist": null, "requires_python": "", "summary": "Allows Django models to be ordered and provides a simple admin interface for reordering them.", "version": "3.3.0" }, "last_serial": 5529021, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9913f93e229438a3c604e49fca78a8c5", "sha256": "6d4b623dbb2fb351bf7846accfb950d88c1820cf85cc286fbf04145b057ab88f" }, "downloads": -1, "filename": "django-ordered-model-0.1.tar.gz", "has_sig": false, "md5_digest": "9913f93e229438a3c604e49fca78a8c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4482, "upload_time": "2011-06-10T19:01:19", "url": "https://files.pythonhosted.org/packages/e5/c7/22d21ffdc3a6ecd09fa8ad8e721e3149c66e3dbfedfa82c94aeca76c6025/django-ordered-model-0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "e0e024af26d9057491b9217023af2e31", "sha256": "bc2471eeffb435c4437a6734f445013ee4a1a6296a7b1fa806d3e025c5e13403" }, "downloads": -1, "filename": "django-ordered-model-0.1.zip", "has_sig": false, "md5_digest": "e0e024af26d9057491b9217023af2e31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6766, "upload_time": "2011-06-10T19:01:19", "url": "https://files.pythonhosted.org/packages/ee/dc/18581013a798227108ad3d6ae2c38282f7ba9b4bfcae912f48674e35479f/django-ordered-model-0.1.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9ff812a1ab5d8d28b35dffd58ce0b2bc", "sha256": "4eed5432e6eabf8598755c06a215a3d08254ab7a18c67cf5b9738230b901827f" }, "downloads": -1, "filename": "django-ordered-model-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9ff812a1ab5d8d28b35dffd58ce0b2bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5282, "upload_time": "2012-11-14T23:59:56", "url": "https://files.pythonhosted.org/packages/ef/da/1e31e420f79d391787ab9056bc3cb0b010d119e2f9f73a7f9340b3888210/django-ordered-model-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7eae3c446d36dfe632fa9ba40a5eafe8", "sha256": "056db75794a05de21920904d29d80ce066ea68668998caca9c27c32ca313411c" }, "downloads": -1, "filename": "django-ordered-model-0.3.0.tar.gz", "has_sig": false, "md5_digest": "7eae3c446d36dfe632fa9ba40a5eafe8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5842, "upload_time": "2013-10-25T11:52:23", "url": "https://files.pythonhosted.org/packages/58/c0/0f84c8aec66bd44cb8f1b1a258c58bc8d39506d8e6a5f0324d9ed80bdac8/django-ordered-model-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ec3d2fa674711fa419f5f4e2d0d8013b", "sha256": "b93a88fabc663033fe64fea90ba5f916fd42273f59a0b8009390f39518079e02" }, "downloads": -1, "filename": "django-ordered-model-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ec3d2fa674711fa419f5f4e2d0d8013b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8633, "upload_time": "2014-07-31T19:06:31", "url": "https://files.pythonhosted.org/packages/c6/f6/010837ba927e4f1d7288606a3a955d1d9e19abb30b38c55df77b7de60ae3/django-ordered-model-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "904181d5f5f92da82f37ff6656552db2", "sha256": "c0873a245bc2f22f2fe39679360be8813116fb073f5b4b87ffc5ef406017832e" }, "downloads": -1, "filename": "django-ordered-model-0.4.1.tar.gz", "has_sig": false, "md5_digest": "904181d5f5f92da82f37ff6656552db2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8953, "upload_time": "2015-04-06T13:39:26", "url": "https://files.pythonhosted.org/packages/9c/bb/94ae5d207a4992bef1713f71dee07cea121b9ee11ea13a5bdf528d0eede7/django-ordered-model-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "d2a1c2b335e5a4762c52b3d5d270e2ef", "sha256": "54ad65d6b4cbb79dafe87b872f47e3aa99339ee258886f81cc1a99abe1541efe" }, "downloads": -1, "filename": "django-ordered-model-0.4.2.tar.gz", "has_sig": false, "md5_digest": "d2a1c2b335e5a4762c52b3d5d270e2ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9060, "upload_time": "2015-06-02T10:05:12", "url": "https://files.pythonhosted.org/packages/45/95/38d647ecb713a9f40fbd2016158fe45abb21e9cd36a0bcce09a7d7151ba4/django-ordered-model-0.4.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "fec1c43e1c576607a2d6b921291ea20d", "sha256": "1ed1f7d6f3877cd1bbb7d9a86a93c3c55dd7c94e57993c2be83b89b28228f3bd" }, "downloads": -1, "filename": "django-ordered-model-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fec1c43e1c576607a2d6b921291ea20d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9740, "upload_time": "2015-11-24T17:04:04", "url": "https://files.pythonhosted.org/packages/51/21/e4ab373d18a23fe57a238f74c995dc58ba0a85ad51dbbdeb5da1eeaba78e/django-ordered-model-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9ef3664390ead3000a4717ab3f48d09c", "sha256": "c7586ce44bc810fae12f6aaeb0bd6250953fef805a24c95ed7185990e608c35b" }, "downloads": -1, "filename": "django-ordered-model-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9ef3664390ead3000a4717ab3f48d09c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12181, "upload_time": "2016-01-15T16:08:00", "url": "https://files.pythonhosted.org/packages/7f/3a/755bbacc0eb10b6b6efe0754fbd2254fe3cf5c4e1bd5c0907a51d21479f2/django-ordered-model-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "bea04d90b21778afaf5354537b4ab82e", "sha256": "59983973f9941e3d6884e0c6a31b9df8a5d9bc4158f5013d7c74c376c5bda8da" }, "downloads": -1, "filename": "django-ordered-model-1.2.0.tar.gz", "has_sig": false, "md5_digest": "bea04d90b21778afaf5354537b4ab82e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12299, "upload_time": "2016-07-08T11:21:26", "url": "https://files.pythonhosted.org/packages/06/1e/554dc90c3e2987d025cdf5556920a079db15c2bc2a9ae9d0cb7428d55f39/django-ordered-model-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "0c1c9b2ff3dbaed9645a54e19a736676", "sha256": "1bb6cfdb6343bdd9a455e31e1f51a790b06a04f8eaefcca929ef7430f2a5c238" }, "downloads": -1, "filename": "django-ordered-model-1.2.1.tar.gz", "has_sig": false, "md5_digest": "0c1c9b2ff3dbaed9645a54e19a736676", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12819, "upload_time": "2016-07-12T14:20:42", "url": "https://files.pythonhosted.org/packages/58/07/4b58bfda7c09bcbf475139c58a4ed372540681e4f5ec73bb510f5b4837f3/django-ordered-model-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "757245cd6845d8a0dd829e99670aaca5", "sha256": "8dec8f7209662c14252f218681873559f39b3c02091058dbf1f5f9f896a43247" }, "downloads": -1, "filename": "django-ordered-model-1.3.0.tar.gz", "has_sig": false, "md5_digest": "757245cd6845d8a0dd829e99670aaca5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13634, "upload_time": "2016-10-08T10:00:42", "url": "https://files.pythonhosted.org/packages/05/ff/53a1f4fe01bc0c5da0551ed539d51ca0c4212826d5be74d66f04afba2d0a/django-ordered-model-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "33f2efce9d9ecdc037e44d51dfc17288", "sha256": "bcf08e54e04377424aab655a6406c4a6f4175187ec3e2f0af23e29c1976ea105" }, "downloads": -1, "filename": "django-ordered-model-1.4.0.tar.gz", "has_sig": false, "md5_digest": "33f2efce9d9ecdc037e44d51dfc17288", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14511, "upload_time": "2017-04-14T14:16:29", "url": "https://files.pythonhosted.org/packages/c0/96/29cafc03014ff39c271b6c3a9ea007723c42640494499f29e2bc89c0265b/django-ordered-model-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "87e59c06e04a276eb25fed4d19cbf9dd", "sha256": "9a975f479883cac6702368a7b14d37af04ea686ce8c65bac22330b430b7d7437" }, "downloads": -1, "filename": "django-ordered-model-1.4.1.tar.gz", "has_sig": false, "md5_digest": "87e59c06e04a276eb25fed4d19cbf9dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14998, "upload_time": "2017-04-16T14:42:31", "url": "https://files.pythonhosted.org/packages/c4/8a/fe46554b696cc360d42a501237b4e66aef5315743ea62b6c833f6b14c745/django-ordered-model-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "8f7badd7ffad50b30d05f767d2ff0047", "sha256": "0364d233dab84ef5c66f99414e025943ee025b18784bf3677c7cca03b7ff04e7" }, "downloads": -1, "filename": "django-ordered-model-1.4.2.tar.gz", "has_sig": false, "md5_digest": "8f7badd7ffad50b30d05f767d2ff0047", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15380, "upload_time": "2017-08-18T18:12:55", "url": "https://files.pythonhosted.org/packages/46/f4/043bc075ff1c72ffec8307d0d8c577b27f21b89dda6872cb2ac064ed7514/django-ordered-model-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "f0ad1406c1db01cf8b02caf7e6724cb6", "sha256": "740b89a3a6ecbee4ee3e227a00b4300f167c7290781b323c8be6dc0985c60e48" }, "downloads": -1, "filename": "django-ordered-model-1.4.3.tar.gz", "has_sig": false, "md5_digest": "f0ad1406c1db01cf8b02caf7e6724cb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15205, "upload_time": "2017-08-29T17:34:15", "url": "https://files.pythonhosted.org/packages/12/ce/8c28002891e1e974a18e8854a49031be9af4cc1f49e633eab88aa1b75ad1/django-ordered-model-1.4.3.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "f9a8452a01f07d9183080e2259036792", "sha256": "a58e18387641284288a9781f7946058fb9e0d8b08c16d0a9e571550212d86160" }, "downloads": -1, "filename": "django-ordered-model-1.5.0.tar.gz", "has_sig": false, "md5_digest": "f9a8452a01f07d9183080e2259036792", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15424, "upload_time": "2018-06-07T07:04:37", "url": "https://files.pythonhosted.org/packages/13/c8/5428f424170889107f7cf686da06d27215dbbf9c47964df3e17a207bc59a/django-ordered-model-1.5.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "dad4af2452479d330e09c8f9f1b3a659", "sha256": "05c3148731031647060bf02a2b5fe43165d370d629576ae755e3437617ea7f8c" }, "downloads": -1, "filename": "django-ordered-model-2.0.0.tar.gz", "has_sig": false, "md5_digest": "dad4af2452479d330e09c8f9f1b3a659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15356, "upload_time": "2018-06-07T07:48:21", "url": "https://files.pythonhosted.org/packages/8d/59/82d93739dfd54f48a6d70f5b940aeef27245d328e23c2db276c93512fb20/django-ordered-model-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "a11b57baa7baeb0542e2436ad890fb71", "sha256": "4a48f68e8dbfea0176638b3fdc06e63acdebf54c396605fc78edd826f870fe93" }, "downloads": -1, "filename": "django-ordered-model-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a11b57baa7baeb0542e2436ad890fb71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16077, "upload_time": "2018-08-16T15:42:07", "url": "https://files.pythonhosted.org/packages/9e/1d/b7da77a787b9a3d180d5a1795f780f064f04fb6642f3a85748e10c9a1ede/django-ordered-model-2.1.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "b33aafa8ba2c32e6a4924b95bf89b763", "sha256": "8a9de1a9ca212b86bf972542e40f62a5e2fc729590419cb789ee5ff850d38bb6" }, "downloads": -1, "filename": "django-ordered-model-3.0.0.tar.gz", "has_sig": false, "md5_digest": "b33aafa8ba2c32e6a4924b95bf89b763", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12003, "upload_time": "2018-09-21T09:11:02", "url": "https://files.pythonhosted.org/packages/21/a2/90bc149f31b9c9dc067ed6a5074947f6469924ff143acace38f26f504539/django-ordered-model-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "25497c10499e2cc357c35753c5205c83", "sha256": "b2bcedaeb46526af1855d24c157718741eef2cd6d3ebb0cbc11baede2f5afb87" }, "downloads": -1, "filename": "django-ordered-model-3.1.0.tar.gz", "has_sig": false, "md5_digest": "25497c10499e2cc357c35753c5205c83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11264, "upload_time": "2018-11-12T16:45:44", "url": "https://files.pythonhosted.org/packages/02/1a/0802db871e2758725391ece879a7945e9afa7722bcb7cc8b17f31e88aed7/django-ordered-model-3.1.0.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "6edab3a7799e524d7f8ad2dd61599e64", "sha256": "14aeacca5a4d41de92b89432a7665b6be5ef254e72418cbeb32258348ad05352" }, "downloads": -1, "filename": "django-ordered-model-3.1.1.tar.gz", "has_sig": false, "md5_digest": "6edab3a7799e524d7f8ad2dd61599e64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11410, "upload_time": "2018-11-13T04:55:04", "url": "https://files.pythonhosted.org/packages/1b/cd/7e4b272e96621ca095743c9eb69d94c4992526eb119d6dfba070fd145556/django-ordered-model-3.1.1.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "d02a4c50eb83a78d4e936f79b2d708a0", "sha256": "8166e96078d931d52f6a8db60b26af17b13b20bb4a262b9ad29d9e33acdc60b1" }, "downloads": -1, "filename": "django_ordered_model-3.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d02a4c50eb83a78d4e936f79b2d708a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13960, "upload_time": "2019-07-10T07:46:59", "url": "https://files.pythonhosted.org/packages/28/ff/567ce8d5886750944e93eda39129f05a9959e2a324a958a75601a46da960/django_ordered_model-3.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d3daed0352130b4a4e0bc9e9f6408420", "sha256": "2010c60372c3d3c1be085788b102550c2679b483cda1fe51d6484ff5c8829aa5" }, "downloads": -1, "filename": "django-ordered-model-3.2.0.tar.gz", "has_sig": false, "md5_digest": "d3daed0352130b4a4e0bc9e9f6408420", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15781, "upload_time": "2019-07-10T07:47:01", "url": "https://files.pythonhosted.org/packages/34/39/0794441cb2613080ec13a3b469ac48908cd6cc1894002cedca51f8f508ff/django-ordered-model-3.2.0.tar.gz" } ], "3.3.0": [ { "comment_text": "", "digests": { "md5": "c8b945172a1eaf8266f74aa0a40654a9", "sha256": "0931f498008f91a00a32c4e0ae08a662ef608a1092bf6e6ec9af9b1a83f08acf" }, "downloads": -1, "filename": "django_ordered_model-3.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c8b945172a1eaf8266f74aa0a40654a9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14484, "upload_time": "2019-07-14T04:42:46", "url": "https://files.pythonhosted.org/packages/b4/0d/ac055b9d4646d30eef05213dc27209a3bd04a517488faa7e14fd3397c197/django_ordered_model-3.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc5ef75b9391bad1498349dcf5412696", "sha256": "abf0d963f7e607a994baf6bc300e50af647b3d243c3e592c6cc8f8b924b6d427" }, "downloads": -1, "filename": "django-ordered-model-3.3.0.tar.gz", "has_sig": false, "md5_digest": "fc5ef75b9391bad1498349dcf5412696", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16373, "upload_time": "2019-07-14T04:42:47", "url": "https://files.pythonhosted.org/packages/d3/f4/4a41f5f8a174cd56457154d1f3f1b8c7eb1d734ed3935dfe530cdca18c37/django-ordered-model-3.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c8b945172a1eaf8266f74aa0a40654a9", "sha256": "0931f498008f91a00a32c4e0ae08a662ef608a1092bf6e6ec9af9b1a83f08acf" }, "downloads": -1, "filename": "django_ordered_model-3.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c8b945172a1eaf8266f74aa0a40654a9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14484, "upload_time": "2019-07-14T04:42:46", "url": "https://files.pythonhosted.org/packages/b4/0d/ac055b9d4646d30eef05213dc27209a3bd04a517488faa7e14fd3397c197/django_ordered_model-3.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc5ef75b9391bad1498349dcf5412696", "sha256": "abf0d963f7e607a994baf6bc300e50af647b3d243c3e592c6cc8f8b924b6d427" }, "downloads": -1, "filename": "django-ordered-model-3.3.0.tar.gz", "has_sig": false, "md5_digest": "fc5ef75b9391bad1498349dcf5412696", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16373, "upload_time": "2019-07-14T04:42:47", "url": "https://files.pythonhosted.org/packages/d3/f4/4a41f5f8a174cd56457154d1f3f1b8c7eb1d734ed3935dfe530cdca18c37/django-ordered-model-3.3.0.tar.gz" } ] }