{ "info": { "author": "podhmo", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython" ], "description": "django-returnfields\n========================================\n\n.. image:: https://travis-ci.org/podhmo/django-returnfields.svg\n :target: https://travis-ci.org/podhmo/django-returnfields.svg\n\nadding restriction of your api's return fields, in restframework.\n\nwhat is this?\n----------------------------------------\n\nThe api is defined, such as below.\n\n::\n\n request: GET /users/1/?format=json\n status code: 200\n response: {\n \"id\": 1,\n \"url\": \"http://testserver/users/1/?format=json\",\n \"username\": \"foo\",\n \"email\": \"\",\n \"is_staff\": false,\n \"skills\": [\n {\n \"id\": 1,\n \"user\": 1,\n \"name\": \"magic\"\n },\n {\n \"id\": 2,\n \"user\": 1,\n \"name\": \"magik\"\n }\n ]\n }\n\nIf you passing `return_fields` option, api's response is filtered.\n\n::\n\n request: GET /users/1/?format=json&return_fields=username,id\n status code: 200\n response: {\n \"id\": 1,\n \"username\": \"foo\"\n }\n\nAnd adding `skip__fields` option, treated as ignored fields.\n\n::\n\n request: GET /users/1/?format=json&return_fields=username,skills&skip_fields=skills__id,skills__user\n status code: 200\n response: {\n \"username\": \"foo\",\n \"skills\": [\n {\n \"name\": \"magic\"\n },\n {\n \"name\": \"magik\"\n }\n ]\n }\n\nhow to use it?\n----------------------------------------\n\nusing `django_returnfields.serializer_factory`\n\n.. code-block:: python\n\n from rest_framework import viewsets\n from django_returnfields import serializer_factory\n\n class UserViewSet(viewsets.ModelViewSet):\n queryset = User.objects.all()\n serializer_class = serializer_factory(UserSerializer)\n\n\nappendix\n----------------------------------------\n\nif you requesting with `aggressive` option, then, django_returnfields tries to use `Query.defer()` or `Query.only()`.\ne.g.\n\n::\n\n GET /users/1/?format=json&return_fields=username,skills&skip_fields=skills__id,skills__user&aggressive=1\n\n\n`aggressive` option is not only using defer and only, but also semi-automatic join or prefetching (TODO: introduction)\n\nexample\n----------------------------------------\n\n.. code-block:: python\n\n ## models\n from django.db import models\n from django.contrib.auth.models import User\n\n\n class Skill(models.Model):\n name = models.CharField(max_length=255, default=\"\", null=False)\n user = models.ForeignKey(User, null=False, related_name=\"skills\")\n\n\n ## serializers\n from rest_framework import serializers\n\n class SkillSerializer(serializers.ModelSerializer):\n class Meta:\n model = Skill\n fields = ('id', 'user', 'name')\n\n\n class UserSerializer(serializers.ModelSerializer):\n skills = SkillSerializer(many=True, read_only=True)\n\n class Meta:\n model = User\n fields = ('id', 'url', 'username', 'email', 'is_staff', 'skills')\n\n ## viewsets\n from rest_framework import viewsets\n from django_returnfields import serializer_factory\n\n class UserViewSet(viewsets.ModelViewSet):\n queryset = User.objects.all()\n serializer_class = serializer_factory(UserSerializer)\n\n class SkillViewSet(viewsets.ModelViewSet):\n queryset = Skill.objects.all()\n serializer_class = serializer_factory(SkillSerializer)\n\n\n ## routes\n\n router = routers.DefaultRouter()\n router.register(r'users', viewsets.UserViewSet)\n router.register(r'skills', viewsets.SkillViewSet)\n\n urlpatterns = [\n url(r'^api/', include(router.urls)),\n ]\n\n\n0.3.2\n\n- simplify\n- bug fix, a optimization is not worked with a serializer has many=False option.\n\n0.3.1\n\n- supporting source option of django restframework's field\n\n0.3\n\n- rewriting aggressive implementation.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/podhmo/django-returnfields", "keywords": "django restframework return_fields", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-returnfields", "package_url": "https://pypi.org/project/django-returnfields/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-returnfields/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/podhmo/django-returnfields" }, "release_url": "https://pypi.org/project/django-returnfields/0.3.2/", "requires_dist": null, "requires_python": null, "summary": "adding restriction of your api's return fields, in restframework", "version": "0.3.2" }, "last_serial": 2242275, "releases": { "0.0": [ { "comment_text": "", "digests": { "md5": "5d3fa38f66a5181a5961fcbb53f9e158", "sha256": "0dc28b6c2d274b442bed7b371e89d00af4601885e2df49f597c87cd37c701ae5" }, "downloads": -1, "filename": "django-returnfields-0.0.tar.gz", "has_sig": false, "md5_digest": "5d3fa38f66a5181a5961fcbb53f9e158", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4179, "upload_time": "2016-04-29T06:21:44", "url": "https://files.pythonhosted.org/packages/29/6e/7313e918689b72b687bd4b2c52670780596f5e2c7093579c0fa6ceb6925c/django-returnfields-0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "e33d2aa35b76f8280eb1dc5a80746965", "sha256": "3585fdd514aa3270a5859975ada4c70633dbab65a8d93f665842dd0e32ab4131" }, "downloads": -1, "filename": "django-returnfields-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e33d2aa35b76f8280eb1dc5a80746965", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4178, "upload_time": "2016-04-29T07:53:25", "url": "https://files.pythonhosted.org/packages/68/7c/23c05e6b4e765e26c4ace4c10827f638b7339e9ff64ee0b354041f23503d/django-returnfields-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "f000c8fbe53162e4734d2d697724e4be", "sha256": "f32816d779a266014f9a0bbc2afa67a893dfad05acebbbcde4abf22fcb8b2129" }, "downloads": -1, "filename": "django-returnfields-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f000c8fbe53162e4734d2d697724e4be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4347, "upload_time": "2016-04-29T12:10:51", "url": "https://files.pythonhosted.org/packages/20/1c/3c3b85602d81a5546ac63e74ad23ad2858daab6dadf3de9c3cb410ed8b89/django-returnfields-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f01f448ae7f12a45287afaebd8ec5e82", "sha256": "7297d8bc975fc6b585507de8a40c0409304a9d1d793b7b210244e6b7354f0de6" }, "downloads": -1, "filename": "django-returnfields-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f01f448ae7f12a45287afaebd8ec5e82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4366, "upload_time": "2016-05-13T06:17:10", "url": "https://files.pythonhosted.org/packages/a9/3e/1820c46ee1a9768fdcd15e5bfdc890e8fea3381d81ff42e193dcc5652d1e/django-returnfields-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "29db3a780c93f89a62f1dc6faf0b7546", "sha256": "6e3d945f82d39052c526689642e0daaba83bcce0c1a65b158c09581a64c52bcc" }, "downloads": -1, "filename": "django-returnfields-0.2.0.tar.gz", "has_sig": false, "md5_digest": "29db3a780c93f89a62f1dc6faf0b7546", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5672, "upload_time": "2016-05-17T04:51:55", "url": "https://files.pythonhosted.org/packages/96/f1/9ca31cde489c288b0e639726f02d75283f0f717ca0cc5a5e9502e793d6b9/django-returnfields-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c307c119ee7a348b2eca55dd394fe69d", "sha256": "b3ae0f1621e3ccbc8c4c0619009e822bcb6e6d72d0674188a91a7600f9a6053f" }, "downloads": -1, "filename": "django-returnfields-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c307c119ee7a348b2eca55dd394fe69d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6038, "upload_time": "2016-05-20T22:13:52", "url": "https://files.pythonhosted.org/packages/10/ef/9fb1cec3c85c9f2a3972445becfdbace9815d7fdff495f5d2eb0f28c5582/django-returnfields-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "c0c4367c5f71f7dbc0cabf4a93b1f687", "sha256": "67161521966a708fe5d27dcf29cabd029f5f57bca73d9a79a0ce6b2331127f0d" }, "downloads": -1, "filename": "django_returnfields-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c0c4367c5f71f7dbc0cabf4a93b1f687", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12063, "upload_time": "2016-07-11T18:41:55", "url": "https://files.pythonhosted.org/packages/d6/ae/611ea307ce2367a9b930f7d502ec815f024d395530e0f0045c406d18f345/django_returnfields-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e70fcbfd0c1d5dd989d2660e35a4f32", "sha256": "2f3a22e7df5f260284dc7c740e96cbb9776cf07afc03e1c7789d95a7d7fb26d5" }, "downloads": -1, "filename": "django-returnfields-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2e70fcbfd0c1d5dd989d2660e35a4f32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9020, "upload_time": "2016-07-11T18:41:49", "url": "https://files.pythonhosted.org/packages/fc/1e/1af9bed34fc347cf4560606e651c3f057ca838e427910d8b125d2c53e2e7/django-returnfields-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "852fed4833de0daba96388129baef0b6", "sha256": "48cebbd081311ac390a0445eade71f9575acf0c9a424ffff73d212d37b75a9c5" }, "downloads": -1, "filename": "django_returnfields-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "852fed4833de0daba96388129baef0b6", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12277, "upload_time": "2016-07-19T16:48:38", "url": "https://files.pythonhosted.org/packages/d9/c1/cc9908960fb0289dc47e3ea2ffee863321038eedb6cd541ac93e32cd4e07/django_returnfields-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "505eab3f955a8ea7b7d26d3ba3d673a9", "sha256": "b210d67f1d391a4d7694120d2549a9949bfc9c9d70dc8b0c70dcbd321f61e7f4" }, "downloads": -1, "filename": "django-returnfields-0.3.1.tar.gz", "has_sig": false, "md5_digest": "505eab3f955a8ea7b7d26d3ba3d673a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9190, "upload_time": "2016-07-19T16:48:35", "url": "https://files.pythonhosted.org/packages/53/d9/21b0f1b7beadb50bb5fa11faa74bddc4e3a721c3c5fa91d9422b46da4186/django-returnfields-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "bbadaceb2499a87d783bfd9cd72ad1cf", "sha256": "0cd3ce6604204d657b550152642f4a6c774ba15318d8a5b8f1457a2d5beeb619" }, "downloads": -1, "filename": "django_returnfields-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bbadaceb2499a87d783bfd9cd72ad1cf", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12511, "upload_time": "2016-07-25T12:05:52", "url": "https://files.pythonhosted.org/packages/9d/77/536a061fca61b2d0b265cb6a3796815b1be204ddaab9c8e8613df8fa4b1e/django_returnfields-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df41931430ff23e83f377a8cf6edc69e", "sha256": "9ffedc1338c2fd23cecdeb99e35d39a639705647922e8f5385b76c0307b8e356" }, "downloads": -1, "filename": "django-returnfields-0.3.2.tar.gz", "has_sig": false, "md5_digest": "df41931430ff23e83f377a8cf6edc69e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9207, "upload_time": "2016-07-25T12:05:49", "url": "https://files.pythonhosted.org/packages/cc/91/78445f02464f3d70c34e6cac3145fcdb873816c7717e12c827e6d0fa3a80/django-returnfields-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bbadaceb2499a87d783bfd9cd72ad1cf", "sha256": "0cd3ce6604204d657b550152642f4a6c774ba15318d8a5b8f1457a2d5beeb619" }, "downloads": -1, "filename": "django_returnfields-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bbadaceb2499a87d783bfd9cd72ad1cf", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12511, "upload_time": "2016-07-25T12:05:52", "url": "https://files.pythonhosted.org/packages/9d/77/536a061fca61b2d0b265cb6a3796815b1be204ddaab9c8e8613df8fa4b1e/django_returnfields-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df41931430ff23e83f377a8cf6edc69e", "sha256": "9ffedc1338c2fd23cecdeb99e35d39a639705647922e8f5385b76c0307b8e356" }, "downloads": -1, "filename": "django-returnfields-0.3.2.tar.gz", "has_sig": false, "md5_digest": "df41931430ff23e83f377a8cf6edc69e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9207, "upload_time": "2016-07-25T12:05:49", "url": "https://files.pythonhosted.org/packages/cc/91/78445f02464f3d70c34e6cac3145fcdb873816c7717e12c827e6d0fa3a80/django-returnfields-0.3.2.tar.gz" } ] }