{
"info": {
"author": "Anton Gilgur",
"author_email": "",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Framework :: Django",
"Framework :: Django :: 1.4",
"Framework :: Django :: 1.5",
"Framework :: Django :: 1.6",
"Framework :: Django :: 1.7",
"Framework :: Django :: 1.8",
"Framework :: Django :: 1.9",
"Framework :: Django :: 1.10",
"Framework :: Django :: 1.11",
"Framework :: Django :: 2.0",
"Framework :: Django :: 2.1",
"Framework :: Django :: 2.2",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Topic :: Software Development :: Libraries"
],
"description": "# django-serializable-model\n\n\n[](https://pypi.org/project/django-serializable-model/)\n[](https://github.com/agilgur5/django-serializable-model/releases)\n[](https://github.com/agilgur5/django-serializable-model/commits/master)\n
\n[](https://pypi.org/project/django-serializable-model/)\n[](https://pypi.org/project/django-serializable-model/)\n
\n[](https://travis-ci.org/agilgur5/django-serializable-model)\n[](https://codecov.io/gh/agilgur5/django-serializable-model)\n
\nDjango classes to make your models, managers, and querysets serializable, with built-in support for related objects in ~100 LoC (shorter than this README!)\n\n## Table of Contents\n\nI. [Installation](#installation)
\nII. [Usage](#usage)
\nIII. [How it Works](#how-it-works)
\nIV. [Related Libraries](#related-libraries)
\nV. [Backstory](#backstory)\n\n## Installation\n\n```shell\npip install django-serializable-model\n```\n\nIt is expected that you already have Django installed\n\n### Compatibility\n\n[](https://pypi.org/project/django-serializable-model/)\n[](https://pypi.org/project/django-serializable-model/)\n\n[Tested](https://travis-ci.org/agilgur5/django-serializable-model) on Django 2.2, 1.11, 1.9, and 1.5 as well as Python 3.5, 3.4, and 2.7\n\n- Should work with Django 1.4-2.x and Python 2.7-3.x\n - Has several Django backward & forward compatibility fixes built-in\n- Likely works with Django 0.95-1.3 as well\n - Pre 1.3 does not support the [`on_delete` argument](https://django.readthedocs.io/en/1.3.X/releases/1.3.html#configurable-delete-cascade) on relations.\n This only affects the usage and examples below; the internals are unaffected.\n - Pre 0.95, the Manager API didn't exist, so some functionality may be limited in those versions, or it may just error on import\n- Have not confirmed if this works with earlier versions of Python.\n\nPlease submit a PR or file an issue if you have a compatibility problem or have confirmed compatibility on versions.\n\n
\n\n## Usage\n\nSimplest use case, just implements the `.serialize()` function on a model:\n\n```python\nfrom django.db import models\nfrom django_serializable_model import SerializableModel\n\n\nclass User(SerializableModel):\n email = models.CharField(max_length=765, blank=True)\n name = models.CharField(max_length=100)\n\n\nnew_user = User.objects.create(\n name='John Doe',\n email='john@doe.com',\n)\n\nprint new_user.serialize()\n# {'id': 1, 'email': 'john@doe.com', 'name': 'John Doe'}\n```\n\n
\n\nWith an override of the default `.serialize()` function to only include whitelisted fields in the serialized dictionary:\n\n```python\nfrom django.db import models\nfrom django_serializable_model import SerializableModel\n\n\nclass User(SerializableModel):\n email = models.CharField(max_length=765, blank=True)\n name = models.CharField(max_length=100)\n # whitelisted fields that are allowed to be seen\n WHITELISTED_FIELDS = set([\n 'name',\n ])\n\n\n def serialize(self, *args, **kwargs):\n \"\"\"Override serialize method to only serialize whitelisted fields\"\"\"\n fields = kwargs.pop('fields', self.WHITELISTED_FIELDS)\n return super(User, self).serialize(*args, fields=fields)\n\n\nnew_user = User.objects.create(\n name='John Doe',\n email='john@doe.com',\n)\n\nprint new_user.serialize()\n# {'name': 'John Doe'}\n```\n\n
\n\nWith a simple, one-to-one relation:\n\n```python\nfrom django.db import models\nfrom django_serializable_model import SerializableModel\n\n\nclass User(SerializableModel):\n email = models.CharField(max_length=765, blank=True)\n name = models.CharField(max_length=100)\n\n\nclass Settings(SerializableModel):\n user = models.OneToOneField(User, primary_key=True,\n on_delete=models.CASCADE)\n email_notifications = models.BooleanField(default=False)\n\n def serialize(self, *args):\n \"\"\"Override serialize method to not serialize the user field\"\"\"\n return super(Settings, self).serialize(*args, exclude=['user'])\n\n\nnew_user = User.objects.create(\n name='John Doe',\n email='john@doe.com',\n)\nSettings.objects.create(user=new_user)\n\nnew_user_refreshed = User.objects.select_related('settings').get(pk=new_user.pk)\n\nprint new_user_refreshed.serialize()\n# {'id': 1, 'email': 'john@doe.com', 'name': 'John Doe'}\n\n# recursively serialize Settings object by passing the join in\nprint new_user_refreshed.serialize('settings')\n# {'id': 1, 'email': 'john@doe.com', 'settings': {'email_notifications': False}, 'name': 'John Doe'}\n```\n\n
\n\nWith a foreign key relation:\n\n```python\nfrom django.db import models\nfrom django_serializable_model import SerializableModel\n\n\nclass User(SerializableModel):\n email = models.CharField(max_length=765, blank=True)\n name = models.CharField(max_length=100)\n\n\nclass Post(SerializableModel):\n user = models.ForeignKey(User, on_delete=models.CASCADE)\n text = models.TextField()\n\n\nnew_user = User.objects.create(\n name='John Doe',\n email='john@doe.com',\n)\nPost.objects.create(user=new_user, text='wat a nice post')\nPost.objects.create(user=new_user, text='another nice post')\n\n# called on QuerySet\nprint Post.objects.all().serialize()\n# [{'id': 1, 'text': 'wat a nice post', 'user_id': 1}, {'id': 2, 'text': 'another nice post', 'user_id': 1}]\n# adds an _id to the foreign key name, just like when using `.values()`\n\n# called on Manager\nuser1 = User.objects.get(pk=new_user.pk)\nprint user1.post_set.serialize()\n# [{'id': 1, 'text': 'wat a nice post', 'user_id': 1}, {'id': 2, 'text': 'another nice post', 'user_id': 1}]\n\n# recursively serialize Post objects by passing the join in\nprint User.objects.prefetch_related('post_set').get(pk=new_user.pk).serialize('post_set')\n\"\"\"\n{\n 'id': 1,\n 'email': 'john@doe.com',\n 'name': 'John Doe',\n 'post_set': [{'id': 1, 'text': 'wat a nice post', 'user_id': 1}, {'id': 2, 'text': 'another nice post', 'user_id': 1}]\n}\n\"\"\"\n```\n\n
\n\n`.serialize` takes in any number of joins as its `*args` and they can be of any depth, using the same `__` syntax as [`prefetch_related`](https://docs.djangoproject.com/en/2.0/ref/models/querysets/#prefetch-related). This means if your `Post` object also had `Comment` objects, you could write:\n\n```python\nUser.objects.prefetch_related('post_set__comment_set').serialize('post_set__comment_set')\n```\n\nand get an array of `Comment` dictionaries within each `Post` dictionary. If your `Post` object also had `Like` objects:\n\n```python\njoins = ['post_set__comment_set', 'post_set__like_set']\nUser.objects.prefetch_related(*joins).serialize(*joins)\n```\n\n
\n\n### JSON and APIs\n\nSince `.serialize` outputs a dictionary, one can turn it into JSON simply by using `json.dumps` on the dictionary.\n\nIf you're building an API, you can use `JSONResponse` on the dictionary as well.\n\n
\n\n## How it works\n\nImplementing a `.serialize` method on Models, Managers, and QuerySets allows for easily customizable whitelists and blacklists (among other things) on a per Model basis.\nThis type of behavior was not possible a simple recursive version of `model_to_dict`, but is often necessary for various security measures and overrides.\nIn order to recurse over relations / joins, it accepts the same arguments as the familiar `prefetch_related`, which, in my use cases, often immediately precedes the `.serialize` calls.\n`.serialize` also uses a custom `model_to_dict` function that behaves a bit differently than the built-in one in a variety of ways that are more expected when building an API (see the docstring).\n\nI'd encourage you to read the source code, since it's shorter than this README :)\n\n## Related Libraries\n\n- [django-api-decorators](https://github.com/agilgur5/django-api-decorators)\n - `Tiny decorator functions to make it easier to build an API using Django in ~100 LoC`\n\n
\n\n## Backstory\n\nThis library was built while I was working on [Yorango](https://github.com/Yorango)'s ad-hoc API. Writing code to serialize various models was complex and quite tedious, resulting in messy spaghetti code for many of our API methods. The only solutions I could find online were the [Django Full Serializers](http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers) from [wadofstuff](https://github.com/mattimustang/wadofstuff) as well as some recursive `model_to_dict` snippets online -- none of which gave the option for customizable whitelists and blacklists on a per Model basis.\nLater on, I found that [Django REST Framework's ModelSerializers](http://www.django-rest-framework.org/api-guide/serializers#modelserializer) do offer similar functionality to what I was looking for (and _without_ requiring buy-in to the rest of the framework), albeit with some added complexity and robustness.\n\nI ended up writing my own solution in ~100 LoC that handled basically all of my needs and replaced a ton of messy serialiazation code from all around the codebase. It was used in production with fantastic results, including on queries with quite the complexity and depth, such as:\n\n```python\n\n joins = ['unit_set', 'unit_set__listing_set',\n 'unit_set__listing_set__tenants', 'unit_set__listing_set__bill_set',\n 'unit_set__listing_set__payment_set__payer',\n 'unit_set__listing_set__contract']\n s_props = (user.property_set.all().prefetch_related(*joins)\n .serialize(*joins))\n\n```\n\nHad been meaning to extract and open source this as well as other various useful utility libraries I had made at Yorango and finally got the chance!\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": "https://github.com/agilgur5/django-serializable-model",
"keywords": "django serializer serializers serializer-django serialize json dict queryset model modelmanager full wadofstuff",
"license": "Apache-2.0",
"maintainer": "",
"maintainer_email": "",
"name": "django-serializable-model",
"package_url": "https://pypi.org/project/django-serializable-model/",
"platform": "",
"project_url": "https://pypi.org/project/django-serializable-model/",
"project_urls": {
"Homepage": "https://github.com/agilgur5/django-serializable-model",
"Source": "https://github.com/agilgur5/django-serializable-model/",
"Tracker": "https://github.com/agilgur5/django-serializable-model/issues"
},
"release_url": "https://pypi.org/project/django-serializable-model/0.0.6/",
"requires_dist": null,
"requires_python": ">=2.7, <4",
"summary": "Django classes to make your models, managers, and querysets serializable, with built-in support for related objects in ~150 LoC",
"version": "0.0.6",
"yanked": false,
"yanked_reason": null
},
"last_serial": 6034751,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "3b2b6d61e9f82a435687a72a106175f4",
"sha256": "656e74014d45b47aa59b542d8bea6d116e8b8fc2c37daed983679a9823012b27"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "3b2b6d61e9f82a435687a72a106175f4",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9326,
"upload_time": "2018-03-18T05:36:08",
"upload_time_iso_8601": "2018-03-18T05:36:08.656285Z",
"url": "https://files.pythonhosted.org/packages/76/05/d889a543e06f17ebd3323e12dc192f96634d975f2bdd8134c62b11cf3ae0/django_serializable_model-0.0.1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "28199cf528da52d2401d00f170ffc3a9",
"sha256": "81aa9eb4cabda590802fea27e27c67aaa94caeb88fd3f200bbdf3d166a5873c3"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "28199cf528da52d2401d00f170ffc3a9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6307,
"upload_time": "2018-03-18T05:36:10",
"upload_time_iso_8601": "2018-03-18T05:36:10.217369Z",
"url": "https://files.pythonhosted.org/packages/3f/52/26a74baf549235f33fb0e1949d2fec356c0a34ac21c0146ae707f872bc90/django-serializable-model-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "b6133f365e3c0b9860efaee97f57d428",
"sha256": "094cd8ea91de2bc07166dd4ab30efeaf268b37b56c574837c8a41b4120a1be33"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b6133f365e3c0b9860efaee97f57d428",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 6061,
"upload_time": "2018-07-29T23:45:42",
"upload_time_iso_8601": "2018-07-29T23:45:42.736556Z",
"url": "https://files.pythonhosted.org/packages/62/56/3c05f071412f68b70833a3ad6d12185efdb4c03a5ec3a8b35f825ef66f8d/django_serializable_model-0.0.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "9651464ab16f5f80fee665f5bbbebb7d",
"sha256": "aacb5496b65a544678ef69298f35c02d75b1b1015c8b517cbfbf9446bdd7c1fb"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "9651464ab16f5f80fee665f5bbbebb7d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 6733,
"upload_time": "2018-07-29T23:45:43",
"upload_time_iso_8601": "2018-07-29T23:45:43.698307Z",
"url": "https://files.pythonhosted.org/packages/f6/a8/b5c2081ab0c7204ebcde09471cb18efcdaaae0728972b8ee90eaee0348a7/django-serializable-model-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "f26c76779fac6a328d13ac35aa2a85cd",
"sha256": "98e8a99b117b2ef158ff9b30a082528d01a28daedcd0f3fd9b4c8a896411e521"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f26c76779fac6a328d13ac35aa2a85cd",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 6254,
"upload_time": "2018-07-31T23:25:24",
"upload_time_iso_8601": "2018-07-31T23:25:24.074537Z",
"url": "https://files.pythonhosted.org/packages/28/b3/f98ee46bfac137f5b49af9530e6d26d29af6bc613b54943c20528d4e6f3c/django_serializable_model-0.0.3-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "215df72aa261f9e07b23f7ed18a33803",
"sha256": "8c7c77e8ba4fd24eb01745ee04d6b5aaeb4fc4ce51db9ca78fb0751beb889cee"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "215df72aa261f9e07b23f7ed18a33803",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 7027,
"upload_time": "2018-07-31T23:25:25",
"upload_time_iso_8601": "2018-07-31T23:25:25.520894Z",
"url": "https://files.pythonhosted.org/packages/75/7f/e6b14eb639bbed0db07fd03008c7152d433c7efca431f0b0e452a2426d27/django-serializable-model-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "b258d6d9cea59642dc1fad053c8a046a",
"sha256": "f0588dfd504e22f765b94b0e95c4919b08c5c9012a2c54700033699588fb4167"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b258d6d9cea59642dc1fad053c8a046a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 6860,
"upload_time": "2019-08-08T00:47:01",
"upload_time_iso_8601": "2019-08-08T00:47:01.928577Z",
"url": "https://files.pythonhosted.org/packages/d0/1c/660635373341b0505c33b21c42da323b9a0d6197efa64509f1e839b9d8bb/django_serializable_model-0.0.4-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "6e0fd30fb279eb5a1c79c1f410c1eeb2",
"sha256": "81c7c5c6ff237fb8417b42ae9fc51952897c6221f20ac70f25e20de443fee105"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "6e0fd30fb279eb5a1c79c1f410c1eeb2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 7585,
"upload_time": "2019-08-08T00:47:04",
"upload_time_iso_8601": "2019-08-08T00:47:04.210640Z",
"url": "https://files.pythonhosted.org/packages/bd/86/9521090ea81ed4103ed9d3392983aef77c511ca8c8fbf87eb783882b98fb/django-serializable-model-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "0465b10f9b7bd7f28d7526c35deed2cb",
"sha256": "ed524a88145a091945dd3c722b3a18123ebfadc6fb356f11a7b864a048c63df4"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0465b10f9b7bd7f28d7526c35deed2cb",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 6857,
"upload_time": "2019-08-22T01:04:55",
"upload_time_iso_8601": "2019-08-22T01:04:55.585494Z",
"url": "https://files.pythonhosted.org/packages/39/21/35b4961ff8a2fcf0ed8787319a41d3b067e6cb736aeaa1b1036e5a5c877c/django_serializable_model-0.0.5-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "33451c1b7e7b4248d37c6f41aff606ca",
"sha256": "7e743443e38d84e7e37e76a68e05923ec9b3a9804e6091ff10c9c0b12bd78a80"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "33451c1b7e7b4248d37c6f41aff606ca",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 7601,
"upload_time": "2019-08-22T01:04:57",
"upload_time_iso_8601": "2019-08-22T01:04:57.438622Z",
"url": "https://files.pythonhosted.org/packages/c5/cc/5ed20ab660d1c280d90d059c449473e91be266f83f0427e72d79f49bc502/django-serializable-model-0.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.5a1": [
{
"comment_text": "",
"digests": {
"md5": "0fb29882b130bd37f4d962d724b662e2",
"sha256": "bbeb47ad8100d8f8d02d1025e93ac58e254ed1eb9de4b52e4f5c08d5a4283fba"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.5a1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0fb29882b130bd37f4d962d724b662e2",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 6878,
"upload_time": "2019-08-08T02:58:28",
"upload_time_iso_8601": "2019-08-08T02:58:28.605792Z",
"url": "https://files.pythonhosted.org/packages/d2/7f/145fd2cd9ac2084a58e86d078b3cd9edeeb45ab54d3d8da3e6a3e3b69133/django_serializable_model-0.0.5a1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "17ad20aee90a8c1cda2001f4bcb5f739",
"sha256": "c6d5100e9264b3e57f46147f2521b9ff031d06ffb04b2dcec11c0fc1a48ffdd3"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.5a1.tar.gz",
"has_sig": false,
"md5_digest": "17ad20aee90a8c1cda2001f4bcb5f739",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 7607,
"upload_time": "2019-08-08T02:58:30",
"upload_time_iso_8601": "2019-08-08T02:58:30.755426Z",
"url": "https://files.pythonhosted.org/packages/f5/3b/4a02f82c3821c8d73b0297888bed89407a98cab9e9e8516a9dc2d9953aff/django-serializable-model-0.0.5a1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "287c9a1b39c8ab279fdf929069fc8deb",
"sha256": "66bf5a4cbd321e0c374052293079059cff1f829848500d749cb9e356390513b6"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "287c9a1b39c8ab279fdf929069fc8deb",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 7957,
"upload_time": "2019-10-26T19:29:38",
"upload_time_iso_8601": "2019-10-26T19:29:38.802855Z",
"url": "https://files.pythonhosted.org/packages/a5/14/5904525262dbcfc36ee8cbe9ba9cbcfc4b3e7ee81cafca500c50cfd22667/django_serializable_model-0.0.6-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "b196f1c61b49754c47caae31e24ae3e8",
"sha256": "c69a31dcc9805624b3bbe1b147092c800dd619e29f7fd914cd7c81d515913d0c"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "b196f1c61b49754c47caae31e24ae3e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 8147,
"upload_time": "2019-10-26T19:29:40",
"upload_time_iso_8601": "2019-10-26T19:29:40.436644Z",
"url": "https://files.pythonhosted.org/packages/1d/3f/91fb06507e23536b86d9463d204bf8cd2c8f5b7e5f297d2608245b56d8c6/django-serializable-model-0.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "287c9a1b39c8ab279fdf929069fc8deb",
"sha256": "66bf5a4cbd321e0c374052293079059cff1f829848500d749cb9e356390513b6"
},
"downloads": -1,
"filename": "django_serializable_model-0.0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "287c9a1b39c8ab279fdf929069fc8deb",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, <4",
"size": 7957,
"upload_time": "2019-10-26T19:29:38",
"upload_time_iso_8601": "2019-10-26T19:29:38.802855Z",
"url": "https://files.pythonhosted.org/packages/a5/14/5904525262dbcfc36ee8cbe9ba9cbcfc4b3e7ee81cafca500c50cfd22667/django_serializable_model-0.0.6-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "b196f1c61b49754c47caae31e24ae3e8",
"sha256": "c69a31dcc9805624b3bbe1b147092c800dd619e29f7fd914cd7c81d515913d0c"
},
"downloads": -1,
"filename": "django-serializable-model-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "b196f1c61b49754c47caae31e24ae3e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, <4",
"size": 8147,
"upload_time": "2019-10-26T19:29:40",
"upload_time_iso_8601": "2019-10-26T19:29:40.436644Z",
"url": "https://files.pythonhosted.org/packages/1d/3f/91fb06507e23536b86d9463d204bf8cd2c8f5b7e5f297d2608245b56d8c6/django-serializable-model-0.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}