{ "info": { "author": "Simon Charette", "author_email": "charette.s+django-dynamic-choices@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "django-dynamic-choices\n======================\n\n.. image:: https://travis-ci.org/charettes/django-dynamic-choices.svg?branch=master\n :target: https://travis-ci.org/charettes/django-dynamic-choices\n :alt: Build Status\n\n.. image:: https://coveralls.io/repos/charettes/django-dynamic-choices/badge.svg?branch=master\n :target: https://coveralls.io/r/charettes/django-dynamic-choices?branch=master\n :alt: Coverage Status\n\nDjango appilcation that provides fk and m2m dynamic choices and react to django.contrib.admin\nedit/add view interaction to update those choices.\n\nInstallation\n------------\n\n.. code:: sh\n\n pip install django-dynamic-choices\n\n\n============================\ndjango-dynamic-choices changelog\n============================\n\nVersion 1.0.0, 22 february 2015\n--------------------------------\n* Added support for Django 1.7\n\nVersion 0.3.0, 6 august 2012\n--------------------------------\n* Simplified grouped queryset validation\n* Added tested support for 1.4.X\n\nVersion 0.2.0, 31 March 2012:\n--------------------------------\n* dropped django 1.2.X support\n* added django 1.4.X support\n\nVersion 0.1.8, 17 August 2011:\n--------------------------------\n* added DynamicChoicesOneToOneField.\n\nVersion 0.1.7, 20 June 2011:\n--------------------------------\n* fixed the FilteredSelectMultiple widget handler to works when the the widget\n\tis not initialized yet such as when the widget is used in an inline.\n* simplified choices callback validation logic by using the class_prepared signal.\n* added minimal testing for validation logic.\n* fixed an issue with lazy reference FK and M2M.\n\nVersion 0.1.6, 7 May 2011:\n--------------------------------\n* raise exception when a custom admin add|change_form_template is specified\n\ton a DynamicAdmin if it doesn't extends the dynamic_choices one.\n* make sure admin select widgets trigger 'change' events when a new option is added to them\n\twithout relying on DOMEvents.\n* make sure DynamicModelChoiceField's queryset returns distinct objects to avoid raising\n\tMultipleObjectsReturned when the dynamically generated queryset spans over multiple tables\n and returns the same object twice.\n\nVersion 0.1.5, 5 April 2011:\n--------------------------------\n\n* fixed some issue with the add link binders in the admin\n* make DynamicChoicesQueryset cloneable\n\nVersion 0.1.4, 8 March 2011:\n--------------------------------\n\n* make sure Promise objects such as translation objects specified in the choices callback\n are encoded correcly.\n* make sure admin select widgets trigger 'change' events when a new option is added to them\n* added js field onchange bindings while making sure to avoid circular references\n\nVersion 0.1.3, 18 February 2011:\n--------------------------------\n\n* added js api to bind FK/M2M admin widget add links to specific fields\n* added support for multiple jQuery versions\n* fixed an issue with admin dynamic-choices js files not considering settings.(STATIC|MEDIA)_URL. Thanks bmeyer71@github.com\n* embed admin choices binder directly in the page\n (make sure to extend \"admin/dynamic_choices_change_form.html\" if you're overriding DynamicAdmin.change|add_form_template)\n\nVersion 0.1.2, 5 February 2011:\n--------------------------------\n\n* fixed an issue with choices callback with no lookups\n* fixed an issue with user defined forms on DynamicAdmin and inlines\n* handle 3+ depth descriptors (field__field__...)\n\nVersion 0.1.1, 29 December 2010:\n--------------------------------\n\n* fixed an issue with formset empty form\n* added support for south\n* added support for reversion\n\nI'm planing to refactor the code for version 0.2.0 in order to add support for dynamic managers or \"model instance managers\".\nDynamic choices will be bound to such managers. Data provided will also be wrapped in some class and tuple choices in some kind of QuerysetCollection.\nStay tuned!\n\nVersion 0.1.0, 27 December 2010:\n--------------------------------\n\n* initial release\n\nAt the moment this project is more of a \"proof of concept\" or exploration in order to find a clever way of adding dynamic model field choices to django.", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/charettes/django-dynamic-choices", "keywords": "django admin choices dynamic", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "django-dynamic-choices", "package_url": "https://pypi.org/project/django-dynamic-choices/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-dynamic-choices/", "project_urls": { "Homepage": "https://github.com/charettes/django-dynamic-choices" }, "release_url": "https://pypi.org/project/django-dynamic-choices/1.1.0/", "requires_dist": [ "Django (>=1.4,<1.8)" ], "requires_python": null, "summary": "Django admin fk and m2m dynamic choices by providing callback support", "version": "1.1.0" }, "last_serial": 1442005, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "349e4c832f4e4ea2600f149283856374", "sha256": "b787340fef360288b35008cb96b95b87f6096523d758d4b007b47c7b1f698fa7" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.tar.gz", "has_sig": false, "md5_digest": "349e4c832f4e4ea2600f149283856374", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9594, "upload_time": "2010-12-27T02:59:39", "url": "https://files.pythonhosted.org/packages/7c/5d/28fc54fa3be0ac5f3249696b005cdea929dce9bafa1c06827a7f64dd96d6/django-dynamic-choices-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "eb7883d5816502a1199d43b7a85a5a5b", "sha256": "f0f8bc039776f0814a7c0fd7eef86027325dd3f48048a096137a766a381adcba" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eb7883d5816502a1199d43b7a85a5a5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11599, "upload_time": "2010-12-30T05:38:10", "url": "https://files.pythonhosted.org/packages/70/c9/e3a3c4ada4e388d4ea0c6fb90fa9b60d1cd0d1dcf81679517ffa5485cfe8/django-dynamic-choices-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bba8cee16d5b970b712eb4341a1e5f4a", "sha256": "8d99d9ba70987aa77aca93719953571011bd766d48b1c1419016fd9295885dec" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.2.tar.gz", "has_sig": false, "md5_digest": "bba8cee16d5b970b712eb4341a1e5f4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12010, "upload_time": "2011-02-05T09:32:05", "url": "https://files.pythonhosted.org/packages/54/cb/589e2779dde780457a10203e36eb4e8a16bbe2a5e82c111c5dcba271c1bf/django-dynamic-choices-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d5e79828e404151df55db333161a1a20", "sha256": "f500ffa0627abd53e429a9edfb81efa62ac15232d6000abd66694c39fd51cc31" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d5e79828e404151df55db333161a1a20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13550, "upload_time": "2011-02-18T10:22:16", "url": "https://files.pythonhosted.org/packages/84/5b/2045d44bc546b1f61bb6280114fb4b184eb9c832f4d9f7f9efed26ceeb92/django-dynamic-choices-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c83f1592eccf459ff25586119af1d33e", "sha256": "1fece2a28cbdfbe36a1f5e46f0e43e79bf8ed4281f27f0a6bc2484a503bb2916" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.4.tar.gz", "has_sig": false, "md5_digest": "c83f1592eccf459ff25586119af1d33e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14108, "upload_time": "2011-03-08T07:07:13", "url": "https://files.pythonhosted.org/packages/c6/8c/4c0a0dcd40ee51cb3eb8dd61f00d0454a6531af780194ff4e16fa0512aa1/django-dynamic-choices-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "f0b78f63f77f3fbffe200f8ac1c6baad", "sha256": "3867dbdf0ac39aec4bf5ccf7f04bfbcc9454ae34beda069163fb1cd346869aeb" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.5.tar.gz", "has_sig": false, "md5_digest": "f0b78f63f77f3fbffe200f8ac1c6baad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14313, "upload_time": "2011-04-05T07:52:18", "url": "https://files.pythonhosted.org/packages/36/6d/886fe7e54edb37b6f32a5029daceed5facc74c6ccbdb2cd98c109cfb094a/django-dynamic-choices-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "cc77f5cea33403a42ae69ec28f32e1e5", "sha256": "e7cb5c2f2dfe1441d57f596fab70d3ddc02b84f1a457830bb3d9396f892a6b04" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.6.tar.gz", "has_sig": false, "md5_digest": "cc77f5cea33403a42ae69ec28f32e1e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14960, "upload_time": "2011-05-07T06:49:47", "url": "https://files.pythonhosted.org/packages/60/4b/0a4042f8ef79a15cb4b0aea2d40abf091cae9a871e34e5b02c92c07ad3b0/django-dynamic-choices-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "2f937b81717d8ce1e0975df5713020d5", "sha256": "4541ae0b96e1706ac6f499d46899c84b8b955b554a64d51fac8e2e63598fe0a0" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.7.tar.gz", "has_sig": false, "md5_digest": "2f937b81717d8ce1e0975df5713020d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15413, "upload_time": "2011-06-21T01:02:33", "url": "https://files.pythonhosted.org/packages/35/02/2364eace6a6f7c1eb04c9fce3db4b8f087cbb3b2da7be665487b87e47ed0/django-dynamic-choices-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "c0159c964043ea93b28faf6b458264a9", "sha256": "1311be5af4b4c69cc36fb98f202db0844b1968b14762ec8d876cb208c2e3f802" }, "downloads": -1, "filename": "django-dynamic-choices-0.1.8.tar.gz", "has_sig": false, "md5_digest": "c0159c964043ea93b28faf6b458264a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15483, "upload_time": "2011-08-17T08:06:14", "url": "https://files.pythonhosted.org/packages/2a/b1/2c00d56b7cc4b34659de2d018dd99e270307855f406490587045ee68beb2/django-dynamic-choices-0.1.8.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "27ef0abca99e2398341d2cf0ff9b33c5", "sha256": "aa56104a9452a67c5f2ab52cef621c4dc1756535fd774d6fc4597c81903b740b" }, "downloads": -1, "filename": "django-dynamic-choices-0.2.0.tar.gz", "has_sig": false, "md5_digest": "27ef0abca99e2398341d2cf0ff9b33c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15585, "upload_time": "2012-03-31T18:51:45", "url": "https://files.pythonhosted.org/packages/7b/fb/0a7be66e5b1ed6778d516c05193a88196fadb84ca445391444c37a468d4b/django-dynamic-choices-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "057e165c579a06287a71b08ea0d3cac6", "sha256": "11d1669906c18924deff5c2ed6e7f7cd05ea52a7ca92a3aad3385bf6b375a1b0" }, "downloads": -1, "filename": "django-dynamic-choices-0.3.0.tar.gz", "has_sig": false, "md5_digest": "057e165c579a06287a71b08ea0d3cac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19378, "upload_time": "2012-08-06T07:49:23", "url": "https://files.pythonhosted.org/packages/aa/49/55ccaa15ef54766f51a141f8582e457d0e9ce31b9c55b8e3e82955c92051/django-dynamic-choices-0.3.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "a328bd43392eaceefbe85af308292af5", "sha256": "ed60f1dcf4b84c5c3dec62358d20d8a8623fee8c44a48fdf229db6f0715259c7" }, "downloads": -1, "filename": "django_dynamic_choices-1.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a328bd43392eaceefbe85af308292af5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21093, "upload_time": "2015-02-22T06:15:57", "url": "https://files.pythonhosted.org/packages/91/1e/4d03e393d592865432d72762aa4e2109a240d90722156e6e154491785926/django_dynamic_choices-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc61c28138db8a5fcb3d0f915fe4b16c", "sha256": "93d0e568104e0264122c0cc88fba2e5e7618e6c1cba31f126a78df52a0272dfb" }, "downloads": -1, "filename": "django-dynamic-choices-1.0.0.tar.gz", "has_sig": false, "md5_digest": "bc61c28138db8a5fcb3d0f915fe4b16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22039, "upload_time": "2015-02-22T06:15:59", "url": "https://files.pythonhosted.org/packages/74/89/b8fb630784d87f6b3300333fe734b3c6bf479ccf2077c063b8ab2bbd733f/django-dynamic-choices-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "dd7e06d034ba62f96be861541b24ae6a", "sha256": "eb11a09c754907aa53c3566596331a22ed6cc57186092b0421a1c7ffd058a55d" }, "downloads": -1, "filename": "django_dynamic_choices-1.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "dd7e06d034ba62f96be861541b24ae6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21097, "upload_time": "2015-02-28T04:45:30", "url": "https://files.pythonhosted.org/packages/67/c4/4a5c76322a8dd8f9cefeb257022407416ed3d0994f44871aa718b18f8f42/django_dynamic_choices-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa1d60f26085ba09fac9c22521120814", "sha256": "5845bdb982adc259001e7eb31bdc7ab755e661d86e082dbae2000ee1555dc661" }, "downloads": -1, "filename": "django-dynamic-choices-1.1.0.tar.gz", "has_sig": false, "md5_digest": "aa1d60f26085ba09fac9c22521120814", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16890, "upload_time": "2015-02-28T04:45:32", "url": "https://files.pythonhosted.org/packages/73/8b/ec3373f0696c769d9f53565e43877f2c76b4dab58ea6cbaf47522753b8a3/django-dynamic-choices-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dd7e06d034ba62f96be861541b24ae6a", "sha256": "eb11a09c754907aa53c3566596331a22ed6cc57186092b0421a1c7ffd058a55d" }, "downloads": -1, "filename": "django_dynamic_choices-1.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "dd7e06d034ba62f96be861541b24ae6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21097, "upload_time": "2015-02-28T04:45:30", "url": "https://files.pythonhosted.org/packages/67/c4/4a5c76322a8dd8f9cefeb257022407416ed3d0994f44871aa718b18f8f42/django_dynamic_choices-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa1d60f26085ba09fac9c22521120814", "sha256": "5845bdb982adc259001e7eb31bdc7ab755e661d86e082dbae2000ee1555dc661" }, "downloads": -1, "filename": "django-dynamic-choices-1.1.0.tar.gz", "has_sig": false, "md5_digest": "aa1d60f26085ba09fac9c22521120814", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16890, "upload_time": "2015-02-28T04:45:32", "url": "https://files.pythonhosted.org/packages/73/8b/ec3373f0696c769d9f53565e43877f2c76b4dab58ea6cbaf47522753b8a3/django-dynamic-choices-1.1.0.tar.gz" } ] }