{ "info": { "author": "Matthias Kestenholz", "author_email": "mk@feinheit.ch", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Application Frameworks" ], "description": "========================\ndjango-translated-fields\n========================\n\n.. image:: https://travis-ci.org/matthiask/django-translated-fields.svg?branch=master\n :target: https://travis-ci.org/matthiask/django-translated-fields\n\nDjango model translation without magic-inflicted pain.\n\n\nInstallation and usage\n======================\n\nAfter installing ``django-translated-fields`` in your Python\nenvironment all you have to do is define ``LANGUAGES`` in your\nsettings and add translated fields to your models:\n\n.. code-block:: python\n\n from django.db import models\n from django.utils.translation import gettext_lazy as _\n\n from translated_fields import TranslatedField\n\n class Question(models.Model):\n question = TranslatedField(\n models.CharField(_(\"question\"), max_length=200),\n )\n answer = TranslatedField(\n models.CharField(_(\"answer\"), max_length=200),\n )\n\n def __str__(self):\n return self.question\n\n\nBasic usage\n===========\n\nModel fields are automatically created from the field passed to\n``TranslatedField``, one field per language. For example, with\n``LANGUAGES = [(\"en\", \"English\"), (\"de\", \"German\"), (\"fr\", \"French\")]``,\nthe following list of fields would be created: ``question_en``,\n``question_de``, ``question_fr``, ``answer_en``, ``answer_de``,\nand ``answer_fr``.\n\nThis implies that when changing ``LANGUAGES`` you'll have to run\n``makemigrations`` and ``migrate`` too.\n\nNo ``question`` or ``answer`` model field is actually created. The\n``TranslatedField`` instance is a `descriptor\n`_ which by default\nacts as a property for the current language's field:\n\n.. code-block:: python\n\n from django.utils.translation import override\n\n question = Question(\n question_en=\"How are you?\",\n question_de=\"Wie geht es Dir?\",\n question_fr=\"\u00c7a va?\",\n )\n\n # The default getter automatically returns the value\n # in the current language:\n with override(\"en\"):\n assert question.question == \"How are you?\"\n\n with override(\"de\"):\n assert question.question == \"Wie geht es Dir?\"\n\n # The default setter can also be used to set the value\n # in the current language:\n with override(\"fr\"):\n question.question = \"Comment vas-tu?\"\n\n assert question.question_fr == \"Comment vas-tu?\"\n\n``TranslatedField`` has a ``fields`` attribute that returns a list of all\nthe language fields created.\n\n.. code-block:: python\n\n answer = Question(\n answer_en=\"Very well!\",\n answer_de=\"Gut!\",\n answer_fr=\"\u00c7a va bien!\"\n )\n\n assert answer.answer.fields == [\"answer_en\", \"answer_de\", \"answer_fr\"]\n\nFor more attributes look at the *``TranslatedField`` instance API*\nsection below.\n\nChanging field attributes per language\n======================================\n\nIt is sometimes useful to have slightly differing model fields per\nlanguage, e.g. for making the primary language mandatory. This can be\nachieved by passing a dictionary with keyword arguments per language as\nthe second positional argument to ``TranslatedField``.\n\nFor example, if you add a language to ``LANGUAGES`` when a site is\nalready running, it might be useful to make the new language\nnon-mandatory to simplify editing already existing data through Django's\nadministration interface.\n\nThe following example adds ``blank=True`` to the spanish field:\n\n.. code-block:: python\n\n from translated_fields import TranslatedField\n\n class Question(models.Model):\n question = TranslatedField(\n models.CharField(_(\"question\"), max_length=200),\n {\"es\": {\"blank\": True}},\n )\n\n\nOverriding attribute access (defaults, fallbacks)\n=================================================\n\nThere are no default values or fallbacks, only a wrapped attribute\naccess. The default attribute getter and setter functions simply return\nor set the field for the current language (as returned by\n``django.utils.translation.get_language``). The default getter falls\nback to the first language of the field in case ``get_language()``\nreturns ``None``. Apart from that the default getter has no\nsafetyfeatures and may raise an ``AttributeError`` and the setter might\nset an attribute on the model instance not related to a model field.\n\nBoth getters and setters can be overridden by specifying your own\n``attrgetter`` and ``attrsetter`` functions. E.g. you may want to\nspecify a fallback to the default language (and at the same time allow\nleaving other languages' fields empty):\n\n.. code-block:: python\n\n from django.conf import settings\n from translated_fields import TranslatedField, to_attribute\n\n def fallback_to_default(name, field):\n def getter(self):\n return getattr(\n self,\n to_attribute(name),\n ) or getattr(\n self,\n # First language acts as fallback:\n to_attribute(name, settings.LANGUAGES[0][0]),\n )\n return getter\n\n class Question(models.Model):\n question = TranslatedField(\n models.CharField(_(\"question\"), max_length=200, blank=True),\n {settings.LANGUAGES[0][0]: {\"blank\": False}},\n attrgetter=fallback_to_default,\n )\n\nA custom ``attrsetter`` which always sets all fields follows (probably\nnot very useful, but hopefully instructive):\n\n.. code-block:: python\n\n def set_all_fields(name, field):\n def setter(self, value):\n for field in field.fields:\n setattr(self, field, value)\n return setter\n\n\n``TranslatedField`` instance API\n================================\n\nThe ``TranslatedField`` descriptor has a few useful attributes (sticking\nwith the model and field from the examples above):\n\n* ``Question.question.fields`` contains the names of all automatically\n generated fields, e.g. ``[\"question_en\", \"question_...\", ...]``.\n* ``Question.question.languages`` is the list of language codes.\n* ``Question.question.short_description`` is set to the ``verbose_name``\n of the base field, so that the translatable attribute can be nicely\n used e.g. in ``ModelAdmin.list_display``.\n\n\nUsing a different set of languages\n==================================\n\nIt is also possible to override the list of language codes used, for\nexample if you want to translate a sub- or superset of\n``settings.LANGUAGES``. Combined with ``attrgetter`` and ``attrsetter``\nthere is nothing stopping you from using this field for a different kind\nof translations, not necessarily bound to ``django.utils.translation``\nor even languages at all.\n\n\nTranslated attributes without model field creation\n==================================================\n\nIf model field creation is not desired, you may also use the\n``translated_attributes`` class decorator. This only creates the\nattribute getter property:\n\n.. code-block:: python\n\n from translated_fields import translated_attributes\n\n @translated_attributes(\"attribute\", \"anything\", ...)\n class Test(object):\n attribute_en = \"some value\"\n attribute_de = \"some other value\"\n\n\nModel admin support\n===================\n\nThe ``TranslatedFieldAdmin`` class adds the respective language to the\nlabel of individual fields. Instead of three fields named \"Question\"\nyou'll get the fields \"Question [en]\", \"Question [de]\" and \"Question\n[fr]\". It intentionally offers no functionality except for modifying the\nlabel of fields:\n\n.. code-block:: python\n\n from django.contrib import admin\n from translated_fields import TranslatedFieldAdmin\n from .models import Question\n\n @admin.register(Question)\n class QuestionAdmin(TranslatedFieldAdmin, admin.ModelAdmin):\n pass\n\n # For inlines:\n # class SomeInline(TranslatedFieldAdmin, admin.StackedInline):\n # ...\n\nAs mentioned above, the ``fields`` attribute on the ``TranslatedField``\ninstance contains the list of generated fields. This may be useful if\nyou want to customize various aspects of the ``ModelAdmin`` subclass. An\nexample showing various techniques follows:\n\n.. code-block:: python\n\n from django.contrib import admin\n from django.utils.translation import gettext_lazy as _\n from translated_fields import TranslatedFieldAdmin, to_attribute\n from .models import Question\n\n @admin.register(Question)\n class QuestionAdmin(TranslatedFieldAdmin, admin.ModelAdmin):\n # Pack question and answer fields into their own fieldsets:\n fieldsets = [\n (_(\"question\"), {\"fields\": Question.question.fields}),\n (_(\"answer\"), {\"fields\": Question.answer.fields}),\n ]\n\n # Show all fields in the changelist:\n list_display = [\n *Question.question.fields,\n *Question.answer.fields\n ]\n\n # Order by current language's question field:\n def get_ordering(self, request):\n return [to_attribute(\"question\")]\n\n.. note::\n It's strongly recommended to set the ``verbose_name`` of fields when\n using ``TranslatedFieldAdmin``, the first argument of most model\n fields. Otherwise, you'll get duplicated languages, e.g. \"Question en\n [en]\".\n\n\nForms\n=====\n\ndjango-translated-fields provides a helper when you want form fields'\nlabels to contain the language code. If this sounds useful to you do\nthis:\n\n.. code-block:: python\n\n from django import forms\n from translated_fields.utils import language_code_formfield_callback\n from .models import Question\n\n class QuestionForm(forms.ModelForm):\n formfield_callback = language_code_formfield_callback\n\n class Meta:\n model = Question\n fields = [\n *Question.question.fields,\n *Question.answer.fields\n ]\n\n\nOther features\n==============\n\nThere is no support for automatically referencing the current language's\nfield in queries or automatically adding fields to admin fieldsets and\nwhatnot. The code required for these features isn't too hard to write,\nbut it is hard to maintain down the road which contradicts my goal of\nwriting `low maintenance software\n`_. Still, feedback\nand pull requests are very welcome! Please run the style checks and test\nsuite locally before submitting a pull request though -- all that this\nrequires is running `tox `_.\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/matthiask/django-translated-fields/", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "django-translated-fields", "package_url": "https://pypi.org/project/django-translated-fields/", "platform": "OS Independent", "project_url": "https://pypi.org/project/django-translated-fields/", "project_urls": { "Homepage": "https://github.com/matthiask/django-translated-fields/" }, "release_url": "https://pypi.org/project/django-translated-fields/0.8.0/", "requires_dist": [ "Django (>=1.11)" ], "requires_python": "", "summary": "Model translation for Django without magic-inflicted pain", "version": "0.8.0" }, "last_serial": 5877950, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "e4b38a871b8e9dba77fb38fd7171721a", "sha256": "26627229971e983f56f8118e56ab1791eda0e25d93e4a6753d763249f435ffb4" }, "downloads": -1, "filename": "django-translated-fields-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e4b38a871b8e9dba77fb38fd7171721a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3538, "upload_time": "2018-04-18T08:39:37", "url": "https://files.pythonhosted.org/packages/a5/c9/0a6039178b85885d4fde63e03ffddd47259469ed0598a6246eddb6f74b6e/django-translated-fields-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "45e7752fc7aea83043447914c6b6455c", "sha256": "7fb9e5bf2e036db284e4abc96ae996c3d769aba99a9678d94ea733abd48f2307" }, "downloads": -1, "filename": "django_translated_fields-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45e7752fc7aea83043447914c6b6455c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5164, "upload_time": "2018-04-18T11:00:04", "url": "https://files.pythonhosted.org/packages/be/cd/5bcab03b1550f112ddf793507369fa848667e13f6105be7935fca0b26b92/django_translated_fields-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "752cc4c1872a58dbb46e2336a9c9b2ac", "sha256": "6cc1b7183b557aa2291b8ec654abe3cd94a49a93cbde34baa5ceaa5d1c131da8" }, "downloads": -1, "filename": "django-translated-fields-0.1.0.tar.gz", "has_sig": false, "md5_digest": "752cc4c1872a58dbb46e2336a9c9b2ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4379, "upload_time": "2018-04-18T11:00:05", "url": "https://files.pythonhosted.org/packages/dc/74/4b6773939647ba2e4cb1e577ab38eb88e179bb1a774548905fa1e04777c2/django-translated-fields-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f912164b061125a97bb6cefc6c8f1109", "sha256": "9d3952bb01744a826e4fb3ddc0293ef5328a521143baea26b9e975cbdda7b05f" }, "downloads": -1, "filename": "django_translated_fields-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f912164b061125a97bb6cefc6c8f1109", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5789, "upload_time": "2018-04-18T11:51:43", "url": "https://files.pythonhosted.org/packages/2a/57/05da12353d214a2424fb28049b7458727d0e913bc9c28ec6ce684f308e79/django_translated_fields-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80bc0dead2253a876e43eaecf802eb00", "sha256": "8e33c749bbb50ccf66f0c0411aa93c94247622a9c00ec8c6fc5b8777330fe7f6" }, "downloads": -1, "filename": "django-translated-fields-0.1.1.tar.gz", "has_sig": false, "md5_digest": "80bc0dead2253a876e43eaecf802eb00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4747, "upload_time": "2018-04-18T11:51:45", "url": "https://files.pythonhosted.org/packages/c1/03/d4cedebf861eded2bc137f052a444a0dc73bd7cca154dca6b9c43d0b0497/django-translated-fields-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "32a08a3c8cc499c76c49b9c52588b714", "sha256": "aec246bebed575a34f6482cc542a01f0679b7ef45ce14c175c7c18040f26e748" }, "downloads": -1, "filename": "django_translated_fields-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "32a08a3c8cc499c76c49b9c52588b714", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4008, "upload_time": "2018-04-30T08:09:54", "url": "https://files.pythonhosted.org/packages/b8/28/38c069a6c351ede4446bd3087ad97eb010a712f3bbfeac2e80fa2d26603b/django_translated_fields-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7613c3b7ebbaadd1f5fe284c1abaf2a", "sha256": "8c1542eeac5aeb44ed467201a0968f6ba0a5dedc3e1fe69a2e611e8a0009efd1" }, "downloads": -1, "filename": "django-translated-fields-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f7613c3b7ebbaadd1f5fe284c1abaf2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5132, "upload_time": "2018-04-30T08:09:55", "url": "https://files.pythonhosted.org/packages/d3/22/ddcdc67e69d0e4fbe55e05095ea945c87f8561df521eee3e6e8499225fdf/django-translated-fields-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "be32dc86fceff66438042f56eb8d485e", "sha256": "1b642a20173b757e15292b1d468537c8e54af5869193a4ed4d9dac6d4f13f343" }, "downloads": -1, "filename": "django_translated_fields-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "be32dc86fceff66438042f56eb8d485e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7924, "upload_time": "2018-05-03T15:14:26", "url": "https://files.pythonhosted.org/packages/4d/7d/0da101baa568d24efb1af717f30918a496c8ae33e0126b0785f62678c140/django_translated_fields-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6a104e7f58ff59022a77e257dfd6c7b", "sha256": "c1ae80605bfe05d3b116e8ceb2f769366592ff08e45940f094ed53932b23eb96" }, "downloads": -1, "filename": "django-translated-fields-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f6a104e7f58ff59022a77e257dfd6c7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6191, "upload_time": "2018-05-03T15:14:27", "url": "https://files.pythonhosted.org/packages/1a/bf/078755fbb660b0177b94148b1c317ce02cc8a7e5a431d3caca71c0b8dc5f/django-translated-fields-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "c410103e4b54d70c61e65cbec3b53689", "sha256": "b7a83db0b4e441490c788621e56662698e00728137846a43b9049d1993c16ec5" }, "downloads": -1, "filename": "django_translated_fields-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c410103e4b54d70c61e65cbec3b53689", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9202, "upload_time": "2018-06-14T10:07:41", "url": "https://files.pythonhosted.org/packages/00/f7/688748bc66372511da158b411fd9208ea9e1fd36088bbb2cb9b3b8ee898f/django_translated_fields-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81cb832de74b6b10c4979a0c8e497ac9", "sha256": "553d63d4487a2191f3584ce4354e206171a6073b95b09b383bf3fb2489bc9f60" }, "downloads": -1, "filename": "django-translated-fields-0.4.0.tar.gz", "has_sig": false, "md5_digest": "81cb832de74b6b10c4979a0c8e497ac9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6828, "upload_time": "2018-06-14T10:07:42", "url": "https://files.pythonhosted.org/packages/1b/4b/0c10455ff332403d3dad1c28d9ecffbb97dade7eab4f28266e59c7de1767/django-translated-fields-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "e08eabee543bd2ed3d48903f308d4091", "sha256": "886c19ff5f52861a3da5c9bd74d63de976584e9c00349a8bbe7876f5e82f11cb" }, "downloads": -1, "filename": "django_translated_fields-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e08eabee543bd2ed3d48903f308d4091", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9762, "upload_time": "2018-06-14T16:11:37", "url": "https://files.pythonhosted.org/packages/16/d0/10d66840fd6fb7ff87917365ac9bd36b2d11661adf46c549b5deb2eeb328/django_translated_fields-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fcff0da26c0d2ade5b1bca6cc028a89", "sha256": "9f75fcb448a0a9380024cbf64929fb0e01338ee224346e36edd115cc619a3f99" }, "downloads": -1, "filename": "django-translated-fields-0.5.0.tar.gz", "has_sig": false, "md5_digest": "6fcff0da26c0d2ade5b1bca6cc028a89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7113, "upload_time": "2018-06-14T16:11:38", "url": "https://files.pythonhosted.org/packages/e5/2e/9bf46a62eb61bb58e54f4971446fb6d99a06ca58b142da306929d26e3659/django-translated-fields-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "f763a7f33ca72ac5d024f8d2b956410e", "sha256": "3e46e0954687d532473cac73e85997c5ff33839c17b33f867c3170048b82ffff" }, "downloads": -1, "filename": "django_translated_fields-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f763a7f33ca72ac5d024f8d2b956410e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10910, "upload_time": "2018-10-17T09:07:25", "url": "https://files.pythonhosted.org/packages/bf/7e/29d99c81caa72e71a3214f1d0053fe79338754c1a336ade80c9feeb8edf5/django_translated_fields-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d4903c9b8853983b84c26bbce4f8f65", "sha256": "a96cc997470f43c3972863b2443e6750623451ebf467742b53c9787ebbb0b6cc" }, "downloads": -1, "filename": "django-translated-fields-0.6.0.tar.gz", "has_sig": false, "md5_digest": "6d4903c9b8853983b84c26bbce4f8f65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7866, "upload_time": "2018-10-17T09:07:26", "url": "https://files.pythonhosted.org/packages/39/6b/a56c16151a6cee27c1e3727d6e92fff4093f98a47a5cb0c84735ef2de61a/django-translated-fields-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "b62fadee9e79376867dc9fed467cd469", "sha256": "e5bafc840eb093e30be73c0b4e5f106a3c2a35b247a2b0cb6701766585160338" }, "downloads": -1, "filename": "django_translated_fields-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b62fadee9e79376867dc9fed467cd469", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10845, "upload_time": "2018-10-17T12:18:55", "url": "https://files.pythonhosted.org/packages/3d/d1/f7fa9e2714609cfcc3d08587116cf478cc12c57cbfff66ee911a49634c8a/django_translated_fields-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "246e3a7e01ad58c8306c07b16829dff1", "sha256": "758b5fe17c37d9f7e85d204c3687d1c96a724fa773c3dbfea5c0fa25aa492ef3" }, "downloads": -1, "filename": "django-translated-fields-0.6.1.tar.gz", "has_sig": false, "md5_digest": "246e3a7e01ad58c8306c07b16829dff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7814, "upload_time": "2018-10-17T12:18:57", "url": "https://files.pythonhosted.org/packages/fe/ca/06dcf74146ff17225d40a6af3437eb6e14a12ecba9cc66e59a2a6adaee12/django-translated-fields-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "223fd42aac3e66893d4deddcd0d92c1e", "sha256": "a21d5502a55b2be3f0e8c920160496cb9c28484e810ec2435d7ea97ee36af07a" }, "downloads": -1, "filename": "django_translated_fields-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "223fd42aac3e66893d4deddcd0d92c1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10729, "upload_time": "2018-10-17T13:02:10", "url": "https://files.pythonhosted.org/packages/cf/da/666cf19c7a12c8f7ac9cb334e9b9758759805c7066d1a996334f8cf5d518/django_translated_fields-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9b17ef1a985f0aedf1f8861fd286814", "sha256": "de57d32b49495d047a41f15020d0fd2705d2a0a943cf170251fe227b1fc246a0" }, "downloads": -1, "filename": "django-translated-fields-0.7.0.tar.gz", "has_sig": false, "md5_digest": "e9b17ef1a985f0aedf1f8861fd286814", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7759, "upload_time": "2018-10-17T13:02:12", "url": "https://files.pythonhosted.org/packages/15/ea/664c0c4342661cf6cfc511d41725525ed120a978a78911a51d0aed99b9a2/django-translated-fields-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "0f2a34d28f5da290f4d6c504d7aa726c", "sha256": "b05aff8dba9323591b8e94aca809c8189e2564f68b028470918cf9a2ccc732f6" }, "downloads": -1, "filename": "django_translated_fields-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f2a34d28f5da290f4d6c504d7aa726c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11287, "upload_time": "2018-10-17T16:38:45", "url": "https://files.pythonhosted.org/packages/75/da/b1f796d3d1f12719314fe308d50c5e02fb3da6189df577af361888fc6c4f/django_translated_fields-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d985ff5e86ddba09c1b3593e77c30c9", "sha256": "1c74a299512f661a6789a4d74b3c66e9f429537964fb094806fbd6b6ff8ef2b4" }, "downloads": -1, "filename": "django-translated-fields-0.7.1.tar.gz", "has_sig": false, "md5_digest": "6d985ff5e86ddba09c1b3593e77c30c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7926, "upload_time": "2018-10-17T16:38:46", "url": "https://files.pythonhosted.org/packages/54/d3/b578941151df0113d064af32d912aadb5fbf7ecd86f9e0c8eae5aacc3e13/django-translated-fields-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "01bea50a85701430b1e9a9abea00ef01", "sha256": "d2b40441fbb1ead2321c739c3e3352af67e418a5f43214dffce86e81672fbd93" }, "downloads": -1, "filename": "django_translated_fields-0.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "01bea50a85701430b1e9a9abea00ef01", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11353, "upload_time": "2019-01-29T16:34:45", "url": "https://files.pythonhosted.org/packages/7d/2b/24e21812cb6c846e941bd1535791db52710bd90519f542841c8953e6e3de/django_translated_fields-0.7.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18afe40abd53d20e94a266080e017938", "sha256": "8fd7a505858b04fb4b82ffaabf52feb3a299e6528dfd0762f27e67e8d7ad0122" }, "downloads": -1, "filename": "django-translated-fields-0.7.2.tar.gz", "has_sig": false, "md5_digest": "18afe40abd53d20e94a266080e017938", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7951, "upload_time": "2019-01-29T16:34:46", "url": "https://files.pythonhosted.org/packages/55/8a/97f2a776e83ccd0a4a1f16d5044614857a27872d75943e6b563f60164cb5/django-translated-fields-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "08cf072cf06c410970da273f068926c8", "sha256": "d96169a780bf31e26aa50443f61e7bc68fc0281875da81bae41e6af8f4388d40" }, "downloads": -1, "filename": "django_translated_fields-0.7.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "08cf072cf06c410970da273f068926c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12047, "upload_time": "2019-02-19T12:33:34", "url": "https://files.pythonhosted.org/packages/96/b5/2777a3351b13e62854c63462bcd106beb0795b4904a2f37fb85a644c4d03/django_translated_fields-0.7.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94a06548b5d970515c2038b0c73f1928", "sha256": "0e3f072b481103b5ff4151f6ed5d3b225629dc4b7e858196263756b1a51d7c4a" }, "downloads": -1, "filename": "django-translated-fields-0.7.3.tar.gz", "has_sig": false, "md5_digest": "94a06548b5d970515c2038b0c73f1928", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8519, "upload_time": "2019-02-19T12:33:35", "url": "https://files.pythonhosted.org/packages/29/e0/25f54b7e17d0239a27f1160e590219788ff17ef4ec2e73d8818e6de0ede3/django-translated-fields-0.7.3.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "4f427fa76c8820aa3a9a6ac42a46cbde", "sha256": "434eab193d4e7c1c4ea006ccb1d193d137c85c0111546aabea5904b9eadf98c4" }, "downloads": -1, "filename": "django_translated_fields-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f427fa76c8820aa3a9a6ac42a46cbde", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12210, "upload_time": "2019-06-26T14:02:47", "url": "https://files.pythonhosted.org/packages/76/c6/f9e4b85b1ae5c9647edfe672a9b79cf7804010330a28cd9692fc33a7e553/django_translated_fields-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9cd9bc4702c50a3541bbc1199fd5a0e3", "sha256": "8800e157817beaf7015e2fad28af6047b9c020ad0439cb3fdff3e62e0834ac20" }, "downloads": -1, "filename": "django-translated-fields-0.8.0.tar.gz", "has_sig": false, "md5_digest": "9cd9bc4702c50a3541bbc1199fd5a0e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8707, "upload_time": "2019-06-26T14:02:49", "url": "https://files.pythonhosted.org/packages/0b/4f/1b78495443ba5a3e5757dcf6f3109adae1384987b2141475233916ae10ae/django-translated-fields-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4f427fa76c8820aa3a9a6ac42a46cbde", "sha256": "434eab193d4e7c1c4ea006ccb1d193d137c85c0111546aabea5904b9eadf98c4" }, "downloads": -1, "filename": "django_translated_fields-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f427fa76c8820aa3a9a6ac42a46cbde", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12210, "upload_time": "2019-06-26T14:02:47", "url": "https://files.pythonhosted.org/packages/76/c6/f9e4b85b1ae5c9647edfe672a9b79cf7804010330a28cd9692fc33a7e553/django_translated_fields-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9cd9bc4702c50a3541bbc1199fd5a0e3", "sha256": "8800e157817beaf7015e2fad28af6047b9c020ad0439cb3fdff3e62e0834ac20" }, "downloads": -1, "filename": "django-translated-fields-0.8.0.tar.gz", "has_sig": false, "md5_digest": "9cd9bc4702c50a3541bbc1199fd5a0e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8707, "upload_time": "2019-06-26T14:02:49", "url": "https://files.pythonhosted.org/packages/0b/4f/1b78495443ba5a3e5757dcf6f3109adae1384987b2141475233916ae10ae/django-translated-fields-0.8.0.tar.gz" } ] }