{ "info": { "author": "zzhhss", "author_email": "clayhaw@163.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "drf-optional-fields\n=============\nA django-restframework extension to dynamically specify the returned field.\n\n\nRequirements\n------------\n\n* **Python**: 3.6, 3.7\n* **Django**: 2.0, 2.1, 2.2\n* **DRF**: 3.9\n\nInstallation\n------------\n\nInstall using pip:\n\n pip install django-queryset-exts\n pip install drf-optional-fields\n\nExample:\n------------\nUse ``fields`` in query parameters to specify the returned field.\nFor example, ``fields=id,name,info{city{name},location}`` will return a dict like below: \n```\n{\n \"id\": \"id\",\n \"name\": \"A\",\n \"info\": {\n \"city\": {\n \"name\": \"city name\"\n },\n \"location\": \"localtion\"\n }\n}\n```\n\nObviously, it refers to [facebook field](https://developers.facebook.com/docs/graph-api/using-graph-api/#fields)\n\nUsage\n------------\n\nFirst, make your serializer class inherit from ``drf_optional_fields.serializers.OptionalFieldsMixin``\n\n```Python\nfrom django.db.models.query import Prefetch\nfrom rest_framework import serializers\n\nfrom django_queryset_exts.query import SelectAPIRelated\nfrom drf_optional_fields.serializers import OptionalFieldsMixin\n\n\nclass MyModelsOptionalFieldsSerializer(OptionalFieldsMixin, serializers.ModelSerializer):\n class Meta:\n models = MyModel\n fields = ('field1', 'field2', 'foreign_key_field', 'reverse_many_to_one_field', 'remote_uuid_field')\n\n # use those configs to reduce queries to db \n fields_related_query = {\n 'foreign_key_field': ('foreign_key_field',), # use foreign key field name directly\n 'remote_uuid_field': (SelectAPIRelated('remote_uuid_field'),),\n 'reverse_many_to_one_field': (Prefetch('reverse_many_to_one_field'))\n }\n\n default_fields = deepcopy(fields) # change this line to specify default fields, for example: default_fields = ('field1', )\n\n```\n\nThen, make your api view inherit from ``drf_optional_fields.views.OptionalFieldViewMixin``\n\n```Python\nfrom rest_framework.generics import ListAPIView\nfrom drf_optional_fields.views import OptionalFieldViewMixin\n\nclass MyModelListView(OptionalFieldViewMixin, ListAPIView):\n queryset = MyModel.objects.filter(is_deleted=False)\n serializer_class = MyModelsOptionalFieldsSerializer\n\n```\nIt's done.\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/zzhhss/drf-optional-fields", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "drf-optional-fields", "package_url": "https://pypi.org/project/drf-optional-fields/", "platform": "", "project_url": "https://pypi.org/project/drf-optional-fields/", "project_urls": { "Homepage": "https://github.com/zzhhss/drf-optional-fields" }, "release_url": "https://pypi.org/project/drf-optional-fields/0.0.1/", "requires_dist": null, "requires_python": ">=3.6", "summary": "A django-restframework extension to dynamically specify the returned field.", "version": "0.0.1" }, "last_serial": 5834778, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "dad2848431482abaa85f6f105d511232", "sha256": "ecc2da565d3fa7a26d86f78ab8d9f3fabe9a43d61001ba752dccd84b1430ac17" }, "downloads": -1, "filename": "drf_optional_fields-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dad2848431482abaa85f6f105d511232", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6340, "upload_time": "2019-09-16T08:20:24", "url": "https://files.pythonhosted.org/packages/8b/97/6daf4d26f983cd1f11ab316e7f18b3c3c270e162e84b62f8724d5176b420/drf_optional_fields-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62aaecee68c242e99c5ef34389c973f1", "sha256": "63045b033b056157e713a3c11b585f793d1b8c337da34b51dfbae5f6735c97fe" }, "downloads": -1, "filename": "drf-optional-fields-0.0.1.tar.gz", "has_sig": false, "md5_digest": "62aaecee68c242e99c5ef34389c973f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4774, "upload_time": "2019-09-16T08:20:28", "url": "https://files.pythonhosted.org/packages/94/df/70c5e62b94093b55ebe06da9ef85b2c77fdd7ddd5c2b5694ddc95f10f24f/drf-optional-fields-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dad2848431482abaa85f6f105d511232", "sha256": "ecc2da565d3fa7a26d86f78ab8d9f3fabe9a43d61001ba752dccd84b1430ac17" }, "downloads": -1, "filename": "drf_optional_fields-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dad2848431482abaa85f6f105d511232", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6340, "upload_time": "2019-09-16T08:20:24", "url": "https://files.pythonhosted.org/packages/8b/97/6daf4d26f983cd1f11ab316e7f18b3c3c270e162e84b62f8724d5176b420/drf_optional_fields-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62aaecee68c242e99c5ef34389c973f1", "sha256": "63045b033b056157e713a3c11b585f793d1b8c337da34b51dfbae5f6735c97fe" }, "downloads": -1, "filename": "drf-optional-fields-0.0.1.tar.gz", "has_sig": false, "md5_digest": "62aaecee68c242e99c5ef34389c973f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 4774, "upload_time": "2019-09-16T08:20:28", "url": "https://files.pythonhosted.org/packages/94/df/70c5e62b94093b55ebe06da9ef85b2c77fdd7ddd5c2b5694ddc95f10f24f/drf-optional-fields-0.0.1.tar.gz" } ] }