{ "info": { "author": "Martin Mahner, Seth Buntin, Yann Malet", "author_email": "info@lincolnloop.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.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. image:: https://img.shields.io/pypi/v/django-dynamic-raw-id.svg\n :target: https://pypi.org/project/django-dynamic-raw-id/\n\n.. image:: https://travis-ci.org/bartTC/django-dynamic-raw-id.svg?branch=master\n :target: https://travis-ci.org/bartTC/django-dynamic-raw-id\n\n.. image:: https://api.codacy.com/project/badge/Coverage/bb93482e6a6348058b993a42951a9f19\n :target: https://www.codacy.com/app/bartTC/django-dynamic-raw-id\n\n.. image:: https://api.codacy.com/project/badge/Grade/bb93482e6a6348058b993a42951a9f19\n :target: https://www.codacy.com/app/bartTC/django-dynamic-raw-id\n\n----\n\n.. important:: django-salmonella was renamed to django-dynamic-raw-id and\n re-released as version 2.1. The latest django-salmonella version was 1.2.\n Please upgrade your code, see Installation and Usage below.\n\n----\n\n=====================\ndjango-dynamic-raw-id\n=====================\n\nA Django admin raw_id_fields widget replacement that handles display of an\nobject's string value on change and can be overridden via a template.\nSee this example:\n\n.. image:: http://d.pr/i/10GtM.png\n :target: http://d.pr/i/1kv7d.png\n\nInstallation\n============\n\nThe app is compatible and tested with Python 2.7 \u2192 3.7 and all versions\nof Django between 1.8 \u2192 2.1.\n\nInstall the package with ``pip``:\n\n.. code-block:: bash\n\n $ pip install django-dynamic-raw-id\n\nPut ``dynamic_raw_id`` to your list of ``INSTALLED_APPS``:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n # ... other apps\n 'dynamic_raw_id',\n )\n\nAnd add the ``urlpattern``:\n\n.. code-block:: python\n\n urlpatterns = [\n # ...\n url(r'^admin/dynamic_raw_id/', include('dynamic_raw_id.urls')),\n ]\n\n``dynamic_raw_id`` comes with some static files so don't forget to run\n``manage.py collectstatic``.\n\nUsage\n=====\n\nTo start using django-dynamic-raw-id in your application all you need to do is\nimplement ``DynamicRawIDMixin`` in your ``ModelAdmin`` class and add the desired\nfields to a list of ``dynamic_raw_id_fields``:\n\n.. code-block:: python\n\n from dynamic_raw_id.admin import DynamicRawIDMixin\n\n class UserProfileAdmin(DynamicRawIDMixin, admin.ModelAdmin):\n dynamic_raw_id_fields = ('user',)\n\nYou can use dynamic_raw_id widgets in a Admin filter as well:\n\n.. code-block:: python\n\n from dynamic_raw_id.admin import DynamicRawIDMixin\n from dynamic_raw_id.filters import DynamicRawIDFilter\n\n class UserProfileAdmin(DynamicRawIDMixin, admin.ModelAdmin):\n list_filter = (\n ('dynamic_raw_id_fk', DynamicRawIDFilter),\n )\n\n\nCustomizing the value of the dynamic widget\n===========================================\n\nThe coolest feature of django-dynamic-raw-id is the ability to customize the output\nof the value displayed alongside the ``DynamicRawIDWidget``. There is a basic\nimplementation if all you want is your object's ``__unicode__`` value. To change\nthe value displayed all you need to do is implement the correct template.\n\ndjango-dynamic-raw-id looks for this template structure ``dynamic_raw_id//.html``\nand ``dynamic_raw_id//multi_.html`` (for multi-value lookups).\n\nFor instance, if I have a blog post with a ``User`` dynamic_raw_id field that I want\ndisplay as ``Firstname Lastname``, I would create the template\n``dynamic_raw_id/auth/user.html`` with:\n\n.. code-block:: html+django\n\n {{ object.0.first_name }} {{ object.0.last_name }}\n\nA custom admin URL prefix\n=========================\n\nIf you have your admin *and* the dynamic_raw_id scripts located on a different\nprefix than ``/admin/dynamic_raw_id/`` you need adjust the ``DYNAMIC_RAW_ID_MOUNT_URL``\nJS variable.\n\nExample:\n\n.. code-block::\n\n # In case the app is setup at /foobar/dynamic_raw_id/\n url(r'^foobar/dynamic_raw_id/', include('dynamic_raw_id.urls')),\n\n # Provide a\n \n\nAn ideal place is the admin ``base_site.html`` template. Full example:\n\n.. code-block:: html+django\n\n {% extends \"admin/base.html\" %}\n\n {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}\n\n {% block extrahead %}\n {{ block.super }}\n \n {% endblock %}\n\n {% block branding %}\n

{{ site_header|default:_('Django administration') }}

\n {% endblock %}\n\n {% block nav-global %}{% endblock %}\n\n\nTesting and Local Development\n=============================\n\nThe testsuite uses Selenium to do frontend tests, we require Firefox and\ngeckodriver_ to be installed. You can install geckodriver on OS X with\nHomebrew:\n\n.. code-block:: bash\n\n $ brew install geckodriver\n\nRun the testsuite in your local environment using:\n\n.. code-block:: bash\n\n $ cd django-dynamic-raw-id/\n $ pipenv install --dev\n $ pipenv run test\n\nOr use tox to test against various Django and Python versions:\n\n.. code-block:: bash\n\n $ tox -r\n\nYou can also invoke the test suite or other 'manage.py' commands by calling\nthe ``django-admin`` tool with the test app settings:\n\n.. code-block:: bash\n\n $ cd django-dynamic-raw-id/\n $ pipenv install --dev\n $ pipenv run django-admin\n $ pipenv run django-admin test\n\nThis also allows you to run the internal testing app in a testserver, to\npreview a sample of what django-dynamic-raw-id is doing:\n\n.. code-block:: bash\n\n $ pipenv run django-admin migrate\n $ pipenv run django-admin createsuperuser\n $ pipenv run django-admin runserver\n\n.. note:: The default settings file is set in the ``.env`` file which\n pipenv automatically exposes:\n\n.. code-block:: bash\n\n DJANGO_SETTINGS_MODULE=dynamic_raw_id.tests.testapp.settings\n\n\n.. _geckodriver: https://github.com/mozilla/geckodriver\n\n=========\nChangelog\n=========\n\nv2.6 (2019-06-21)\n=================\n\n- BACKWARDS INCOMPATIBLE: Dropped support for Django <1.11.\n- BACKWARDS INCOMPATIBLE: Dropped support for Python 3.4.\n- Django 2.2 compatibility and tests.\n- General code cleanup.\n- Pipenv support for local development.\n- Some visual fixes around icons and alignment.\n\nv2.5 (2018-12-09)\n=================\n\n- Django 2.1 compatibility and tests.\n\nv2.4 (2018-04-09)\n=================\n\n- Fixes missing icons in Admin views.\n- Fixes missing JS handling when using a custom /admin/ url.\n\nv2.3 (2018-01-18)\n=================\n\n- BACKWARDS INCOMPATIBLE: Renamed the project to `django-dynamic-raw-id`.\n to reflect what it's actually doing.\n- Fixed glass lookup icon in Django 1.10 and below.\n- Specific ordering of media asset loading.\n\nv1.2 (2018-01-17)\n=================\n\n- Multiple fixes and enhancements.\n- Full Selenium based testsuite.\n- Django 2.0 and Python 3 compatibility.\n- pipenv support.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lincolnloop/django-dynamic-raw-id", "keywords": "django,widget,field,admin,raw-id,foreignkey", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-dynamic-raw-id", "package_url": "https://pypi.org/project/django-dynamic-raw-id/", "platform": "", "project_url": "https://pypi.org/project/django-dynamic-raw-id/", "project_urls": { "Homepage": "https://github.com/lincolnloop/django-dynamic-raw-id" }, "release_url": "https://pypi.org/project/django-dynamic-raw-id/2.6/", "requires_dist": [ "django (>=1.8)", "six", "selenium ; extra == 'tests'", "coverage ; extra == 'tests'" ], "requires_python": ">=2.7", "summary": "raw_id_fields widget replacement that handles display of an object's string value on change.", "version": "2.6" }, "last_serial": 5430718, "releases": { "2.1": [ { "comment_text": "", "digests": { "md5": "84b65ef6da3a580e896017ffb6cce915", "sha256": "abed3fbfd1c0a6625e6e74b65b7042522a987dbfa34c2f5c8dac8ae25b8d43c9" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.1.tar.gz", "has_sig": true, "md5_digest": "84b65ef6da3a580e896017ffb6cce915", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16713, "upload_time": "2018-01-19T22:50:40", "url": "https://files.pythonhosted.org/packages/e1/50/5ae1173c77ceb1dd7ef1a75c4bb770b0a04c34453d46c52dcc4827a463b0/django-dynamic-raw-id-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "e254774c34ff7d67cfdef7fad5af51f9", "sha256": "44fc5cdd8b3ce28fc677511fe899721d8911f9e2e50812c920a6209709aa9d94" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e254774c34ff7d67cfdef7fad5af51f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23323, "upload_time": "2018-01-20T11:52:33", "url": "https://files.pythonhosted.org/packages/83/6c/17a4b53cb49770b7d5492eac70c6f88c60a351dbac5e1bbe926481bfa3ba/django_dynamic_raw_id-2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3e4d2ea9c2c6aba421270add389d8ce", "sha256": "83517d21e4f9aa3794c7ddbed0ca8ebef250aa23794a20f9f40cba38decedcef" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.2.tar.gz", "has_sig": false, "md5_digest": "c3e4d2ea9c2c6aba421270add389d8ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16811, "upload_time": "2018-01-20T11:52:36", "url": "https://files.pythonhosted.org/packages/1d/0b/7bab478065d57c52c4518ceda0ca7173ff0500ee04e8ed2f808c5ab9ea51/django-dynamic-raw-id-2.2.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "8018ea2a4fbbca9c9c7fc28b000bfbb0", "sha256": "b85b6dada6fb9723a8f9e22cacd8fd5c246db6aa093a1834fda08f822ab3f7b1" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8018ea2a4fbbca9c9c7fc28b000bfbb0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23487, "upload_time": "2018-01-21T16:06:51", "url": "https://files.pythonhosted.org/packages/22/6e/73cdb01d3af375654d32045bfa4642a46e348825ad50f04e07f864ba26f4/django_dynamic_raw_id-2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02b628e8a9511f169f695adb16dc0723", "sha256": "8fa1bfcfbdff9e96e138f8292dc0c31d54bca5af94e513c72a64f868662e7769" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.3.tar.gz", "has_sig": false, "md5_digest": "02b628e8a9511f169f695adb16dc0723", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16978, "upload_time": "2018-01-21T16:06:53", "url": "https://files.pythonhosted.org/packages/3e/9c/801e0dda90ad5584cc1b9b05d902a648821289876a0578f85e45933717e1/django-dynamic-raw-id-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "a4f9d654a1ab447f916c7a4c6b6034bf", "sha256": "3cc0d08bee5932c09af204456c31d973c3a21a0f56bc96ae3eabf2c82f81503d" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a4f9d654a1ab447f916c7a4c6b6034bf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23568, "upload_time": "2018-04-09T20:09:50", "url": "https://files.pythonhosted.org/packages/ce/1e/4ae947065d64cb60a6e46dc053da33bd9dda88985998c7ef87ebce9b18ee/django_dynamic_raw_id-2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a65eeb560e938f517c2a317f6147c7c", "sha256": "d3223d627c30628a5e9c05dc24dfa4e1ed90b8dab99fa311fe33e83ad3d4f97b" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.4.tar.gz", "has_sig": true, "md5_digest": "3a65eeb560e938f517c2a317f6147c7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17071, "upload_time": "2018-04-09T20:09:52", "url": "https://files.pythonhosted.org/packages/c5/38/e564d75851a4e6acb6bb01d45b02b5cffd248cf745e065b0c61c26ee7693/django-dynamic-raw-id-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "af55a9f2c85304b48db380aef2b21327", "sha256": "5b46e03e999cc060dae3d0334a0ca9351b46e1d9dbbb472cccf8ec8b00ab3953" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "af55a9f2c85304b48db380aef2b21327", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20799, "upload_time": "2018-12-09T15:01:53", "url": "https://files.pythonhosted.org/packages/2b/47/7fbca7e3c3b3150cc4432da84b5e9741d142cf2a27a0f019e4b40cf3232a/django_dynamic_raw_id-2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcb12772bcf03db553f16f330e52d0fb", "sha256": "58d0a70e991f6c55715ac77e38458c490a0abb78e7442a48eda74d7f8758b345" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.5.tar.gz", "has_sig": true, "md5_digest": "dcb12772bcf03db553f16f330e52d0fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17722, "upload_time": "2018-12-09T15:01:55", "url": "https://files.pythonhosted.org/packages/2a/66/08da6c7b96a5b4dbd2f00ab99604fa37323d4af29be21da333b22bedc4cd/django-dynamic-raw-id-2.5.tar.gz" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "c9a0eb6567c84091233257646cbd7bf6", "sha256": "af9cbc6f8744a64d037483b644e3c43497320ebd616a31eea0f950098d814384" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c9a0eb6567c84091233257646cbd7bf6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 36369, "upload_time": "2019-06-21T12:53:12", "url": "https://files.pythonhosted.org/packages/0f/21/1e4f47e6d5545d8bf70106ea672859bae7faaf19e7c27d8b4331916f07c6/django_dynamic_raw_id-2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ab8e548958711c753bfe7e67e842d37", "sha256": "3f449e682a75739b96cdeef224e9b720a4e0f44468f39c79ea829a277607f388" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.6.tar.gz", "has_sig": true, "md5_digest": "0ab8e548958711c753bfe7e67e842d37", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 16409, "upload_time": "2019-06-21T12:53:16", "url": "https://files.pythonhosted.org/packages/26/51/355b493da534501ac54096a69597a9dbe64b91380d6f4e8ef9c5b456d4e2/django-dynamic-raw-id-2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c9a0eb6567c84091233257646cbd7bf6", "sha256": "af9cbc6f8744a64d037483b644e3c43497320ebd616a31eea0f950098d814384" }, "downloads": -1, "filename": "django_dynamic_raw_id-2.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c9a0eb6567c84091233257646cbd7bf6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 36369, "upload_time": "2019-06-21T12:53:12", "url": "https://files.pythonhosted.org/packages/0f/21/1e4f47e6d5545d8bf70106ea672859bae7faaf19e7c27d8b4331916f07c6/django_dynamic_raw_id-2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ab8e548958711c753bfe7e67e842d37", "sha256": "3f449e682a75739b96cdeef224e9b720a4e0f44468f39c79ea829a277607f388" }, "downloads": -1, "filename": "django-dynamic-raw-id-2.6.tar.gz", "has_sig": true, "md5_digest": "0ab8e548958711c753bfe7e67e842d37", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 16409, "upload_time": "2019-06-21T12:53:16", "url": "https://files.pythonhosted.org/packages/26/51/355b493da534501ac54096a69597a9dbe64b91380d6f4e8ef9c5b456d4e2/django-dynamic-raw-id-2.6.tar.gz" } ] }