{ "info": { "author": "oddcc", "author_email": "skycc71640@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Plugins", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python" ], "description": "# django-export-csv\n[![Build Status](https://travis-ci.org/oddcc/django-export-csv.svg?branch=master)](https://travis-ci.org/oddcc/django-export-csv)\n[![Coverage Status](https://coveralls.io/repos/github/oddcc/django-export-csv/badge.svg?branch=develop)](https://coveralls.io/github/oddcc/django-export-csv?branch=develop)\n\n[\u4e2d\u6587\u6587\u6863](https://github.com/oddcc/django-export-csv/blob/master/README_CN.md)\n## Introduction\na CSV exporter for Django\nthis tool create a shortcut to render a queryset to a CSV steaming HTTP response. \n\n## install\nRun:\n```\npip install django-export-csv\n```\nSupport Python 2.7 and 3.5, Django >= 1.8.\n\n## usage\nlet your Class-based views which inherit `ListView` or `MultipleObjectMixin` also inherit `QueryCsvMixin`, then you can use `render_csv_response` to turn a queryset into a response with a CSV attachment. `render_csv_response` takes a `QuerySet` or a `ValuesQuerySet` instance:\n\n### CBV\n```python\nfrom django_export_csv import QueryCsvMixin\nfrom django.views.generic.list import ListView\n\nfrom .models import Student\n\n\nclass StudentListView(QueryCsvMixin, ListView):\n queryset = Student.objects.all()\n\n def get(self, *args, **kwargs):\n return self.render_csv_response(queryset)\n```\n\n### FBV\n```python\nfrom django_export_csv import render_csv_response\n\n\ndef student_list_view(request):\n if request.method == 'GET':\n queryset = Student.objects.all()\n return render_csv_response(queryset)\n```\n\n## custom CSV\nonce you inherit `QueryCsvMixin`, then you can use following arguments to custom CSV export:\n\n- Use `fields` - (default: `[]`) to set fields you want to export, or use `exclude` - (default: `[]`) exclude which you don't want to. If use neither, it will export all non relational fields by default.\n- If you want to export relation fields, just implement your `serializer`, it should take model object as argument and return something you want.\n 1. Use `extra_field` - (default: `[]`) to set relation and custom field names.\n 2. Use `field_serializer_map` - (default: `{}`) to map field names to your serializers, key is field name, value is corresponding serializer.\n 3. Note that fields in `extra_field` must be a corresponding serializer in `field_serializer_map` to work.\n- If you want to change the way information export (like `True`/`False` ==> Yes/No), just implement `serializer` and add it to `field_serializer_map`.\n- Other arguments:\n 1. `filename` - (default: `None`), this argument should be a `str`; if not given(means use default), the CSV filename will be generated by model name.\n 2. `add_datestamp` - (default: `False`), this argument should be boolean, if it is `True`, filename will be add a datestamp.\n 3. `use_verbose_names` - (default: `True`), this argument should be boolean, if it is `True`, CSV header will use model field's verbose_name.\n 4. `field_order` - (default: `[]`), this should be a list to determine field order, any fields not specified will follow those in the list.\n 5. `field_header_map` - (default: `{}`), A dictionary mapping model field's name to CSV column header name. Has a higher priority than the `use_verbose_names`.\n\ne.g:\n\n```python\n# data_init.py\nimport datetime\nfrom .models import Student, College\n\n\ndef create_student_and_get_queryset():\n college1, _ = College.objects.get_or_create(name=\"College 1st\")\n college2, _ = College.objects.get_or_create(name=\"College 2nd\")\n\n Student.objects.get_or_create(\n name='Jim', age=18, is_graduated=False, birthday=datetime.date(1998,6,6), college=college1\n )\n Student.objects.get_or_create(\n name='Bing', age=22, is_graduated=True, birthday=datetime.date(1994, 2, 6), college=college1\n )\n Student.objects.get_or_create(\n name='Monica', age=25, is_graduated=True, birthday=datetime.date(1991, 2, 6), college=college2\n )\n\n return Student.objects.all()\n```\n\n```python\n# views.py\nfrom django_export_csv import QueryCsvMixin\nfrom django_export_csv import render_csv_response\nfrom django.views.generic.list import ListView\n\nfrom .models import Student\nfrom .data_init import create_student_and_get_queryset\n\n\ndef boolean_serializer(value):\n if value == True:\n return 'Y'\n else:\n return 'N'\n \n \ndef college_serializer(obj):\n return obj.college.name\n\n\n# CBV\nclass StudentListView(QueryCsvMixin, ListView):\n filename = 'export_student_list'\n add_datestamp = True\n use_verbose_names = True\n exclude = ['id']\n field_order = ['name', 'is_graduated']\n field_header_map = {'is_graduated': 'Graduated'}\n field_serializer_map = {'is_graduated': boolean_serializer, 'college': college_serializer}\n extra_field = ['college']\n queryset = create_student_and_get_queryset()\n\n def get(self, *args, **kwargs):\n return self.render_csv_response(self.get_queryset())\n \n\n# FBV\ndef student_list_view(request):\n filename = 'export_student_list'\n add_datestamp = True\n use_verbose_names = True\n exclude = ['id']\n field_order = ['name', 'is_graduated']\n field_header_map = {'is_graduated': 'Graduated'}\n field_serializer_map = {'is_graduated': boolean_serializer, 'college': college_serializer}\n extra_field = ['college']\n\n if request.method == 'GET':\n queryset = create_student_and_get_queryset()\n return render_csv_response(\n queryset, filename=filename, add_datestamp=add_datestamp, use_verbose_names=use_verbose_names,\n exclude_field=exclude, field_order=field_order, field_header_map=field_header_map,\n field_serializer_map=field_serializer_map, extra_field=extra_field\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/oddcc/django-export-csv", "keywords": "django,csv,export,queryset", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-export-csv", "package_url": "https://pypi.org/project/django-export-csv/", "platform": "", "project_url": "https://pypi.org/project/django-export-csv/", "project_urls": { "Homepage": "https://github.com/oddcc/django-export-csv" }, "release_url": "https://pypi.org/project/django-export-csv/0.1.3.1/", "requires_dist": null, "requires_python": "", "summary": "A CSV exporter for Django, this tool create a shortcut to render a queryset to a CSV steaming HTTP response.", "version": "0.1.3.1" }, "last_serial": 3716638, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9e6d22d7403f136725d183db69bf5153", "sha256": "3f089453bab9202656e02671797dff76a0d1d126b2bb9f3cf833d4899b5ff5ef" }, "downloads": -1, "filename": "django-export-csv-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9e6d22d7403f136725d183db69bf5153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4387, "upload_time": "2017-05-15T07:06:50", "url": "https://files.pythonhosted.org/packages/3a/17/45da213b80dcdbe1ba8f246919cf612fabe25202b55e476cb0ebc8e9acf8/django-export-csv-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b0a944f54ed21018c80e45ecd92bc55d", "sha256": "95fda2732984c2a97345b21f5f20a901113253d8d049db74ecaa2f823603c802" }, "downloads": -1, "filename": "django-export-csv-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b0a944f54ed21018c80e45ecd92bc55d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6054, "upload_time": "2017-05-23T05:02:01", "url": "https://files.pythonhosted.org/packages/de/d9/e8aa48de7df2c07223846f1a1f8a0859ccb871fd78f63abb48205fc14d12/django-export-csv-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "561215a0d1e848d9f05caaf2682f382d", "sha256": "5c9717a0d6e26e6cad725df7e1ff1e9198bdbd8925c6764e2c4c2eeaa828c393" }, "downloads": -1, "filename": "django-export-csv-0.1.2.tar.gz", "has_sig": false, "md5_digest": "561215a0d1e848d9f05caaf2682f382d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6178, "upload_time": "2017-06-15T08:48:45", "url": "https://files.pythonhosted.org/packages/a8/89/db669b938d3b80aeb37d69d3e4988fd48739b24a8169729087e69184f735/django-export-csv-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0afc4eee9ee367ead4613a6ef6ffc43b", "sha256": "0d5e2aa27eb51d1563eb04627d219ad0151a573e93c70f9072219962181c4a8a" }, "downloads": -1, "filename": "django-export-csv-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0afc4eee9ee367ead4613a6ef6ffc43b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8698, "upload_time": "2018-03-29T09:17:25", "url": "https://files.pythonhosted.org/packages/3e/4b/99e7b15fe13c132816c5b6333ecb6520499d9c9e52f86bc1ba2ad4f37729/django-export-csv-0.1.3.tar.gz" } ], "0.1.3.1": [ { "comment_text": "", "digests": { "md5": "cab833be8fd6bbbe67ed9b0c588b26cd", "sha256": "bcfc7a7e6f651fdfa48d3d5cf1a096b91e8da7136b88bda9f0b48efbdf2dc6d1" }, "downloads": -1, "filename": "django-export-csv-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "cab833be8fd6bbbe67ed9b0c588b26cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10356, "upload_time": "2018-03-29T09:49:22", "url": "https://files.pythonhosted.org/packages/2f/e8/0ce80d196716a362259fb7baba010b0572e927e44e90ebcbf3e2643e6756/django-export-csv-0.1.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cab833be8fd6bbbe67ed9b0c588b26cd", "sha256": "bcfc7a7e6f651fdfa48d3d5cf1a096b91e8da7136b88bda9f0b48efbdf2dc6d1" }, "downloads": -1, "filename": "django-export-csv-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "cab833be8fd6bbbe67ed9b0c588b26cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10356, "upload_time": "2018-03-29T09:49:22", "url": "https://files.pythonhosted.org/packages/2f/e8/0ce80d196716a362259fb7baba010b0572e927e44e90ebcbf3e2643e6756/django-export-csv-0.1.3.1.tar.gz" } ] }