<img src="https://mypy-lang.org/static/mypy_light.svg" alt="mypy logo" width="300px"/>
# pep484 stubs for Django REST framework
[](https://github.com/typeddjango/djangorestframework-stubs/actions/workflows/test.yml)
[](https://mypy-lang.org/)
[](https://gitter.im/mypy-django/Lobby)
[](https://stackoverflow.com/questions/tagged/django-stubs?tab=Active)
Mypy stubs for [Django REST Framework](https://pypi.org/project/djangorestframework/).
Supports Python 3.10 and up.
## Installation
```bash
pip install djangorestframework-stubs[compatible-mypy]
```
To make mypy aware of the plugin, you need to add
```ini
[mypy]
plugins =
mypy_drf_plugin.main
```
in your `mypy.ini` file.
## FAQ
### Model instance is inferred as `Any` instead of my `Model` class
When subclassing `ModelSerializer`, add a [type argument](https://peps.python.org/pep-0484/#generics) to type-hint the related model class, for example:
```python
class MyModelSerializer(serializers.ModelSerializer[MyModel]):
class Meta:
model = MyModel
fields = ("id", "example")
```
Which means that methods where the model is being passed around will know the actual type of the model instead of being `Any`. The `instance` attribute on the above serializer will be `Union[MyModel, typing.Sequence[MyModel], None]`.
## To get help
We have Gitter here: <https://gitter.im/mypy-django/Lobby>
If you think you have more generic typing issue, please refer to <https://github.com/python/mypy> and their Gitter.
## Contributing
This project is open source and community driven. As such we encourage contributions big and small. You can contribute by doing any of the following:
1. Contribute code (e.g. improve stubs, add plugin capabilities, write tests etc) - to do so please follow the [contribution guide](./CONTRIBUTING.md).
2. Assist in code reviews and discussions in issues.
3. Identify bugs and issues and report these
You can always also reach out in gitter to discuss your contributions!
Raw data
{
"_id": null,
"home_page": "https://github.com/typeddjango/djangorestframework-stubs",
"name": "djangorestframework-stubs",
"maintainer": "Marti Raudsepp",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "marti@juffo.org",
"keywords": null,
"author": "Maksim Kurnikov",
"author_email": "maxim.kurnikov@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/5a/c0/c671b8a95534454327335f6c2441f101bc6d63a2c772677ab95e5e899ed6/djangorestframework_stubs-3.16.1.tar.gz",
"platform": null,
"description": "<img src=\"https://mypy-lang.org/static/mypy_light.svg\" alt=\"mypy logo\" width=\"300px\"/>\n\n# pep484 stubs for Django REST framework\n\n[](https://github.com/typeddjango/djangorestframework-stubs/actions/workflows/test.yml)\n[](https://mypy-lang.org/)\n[](https://gitter.im/mypy-django/Lobby)\n[](https://stackoverflow.com/questions/tagged/django-stubs?tab=Active)\n\n\nMypy stubs for [Django REST Framework](https://pypi.org/project/djangorestframework/).\nSupports Python 3.10 and up.\n\n## Installation\n\n```bash\npip install djangorestframework-stubs[compatible-mypy]\n```\n\nTo make mypy aware of the plugin, you need to add\n\n```ini\n[mypy]\nplugins =\n mypy_drf_plugin.main\n```\n\nin your `mypy.ini` file.\n\n## FAQ\n\n### Model instance is inferred as `Any` instead of my `Model` class\n\nWhen subclassing `ModelSerializer`, add a [type argument](https://peps.python.org/pep-0484/#generics) to type-hint the related model class, for example:\n\n```python\nclass MyModelSerializer(serializers.ModelSerializer[MyModel]):\n class Meta:\n model = MyModel\n fields = (\"id\", \"example\")\n```\n\nWhich means that methods where the model is being passed around will know the actual type of the model instead of being `Any`. The `instance` attribute on the above serializer will be `Union[MyModel, typing.Sequence[MyModel], None]`.\n\n## To get help\n\nWe have Gitter here: <https://gitter.im/mypy-django/Lobby>\nIf you think you have more generic typing issue, please refer to <https://github.com/python/mypy> and their Gitter.\n\n## Contributing\n\nThis project is open source and community driven. As such we encourage contributions big and small. You can contribute by doing any of the following:\n\n1. Contribute code (e.g. improve stubs, add plugin capabilities, write tests etc) - to do so please follow the [contribution guide](./CONTRIBUTING.md).\n2. Assist in code reviews and discussions in issues.\n3. Identify bugs and issues and report these\n\nYou can always also reach out in gitter to discuss your contributions!\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "PEP-484 stubs for django-rest-framework",
"version": "3.16.1",
"project_urls": {
"Funding": "https://github.com/sponsors/typeddjango",
"Homepage": "https://github.com/typeddjango/djangorestframework-stubs",
"Release notes": "https://github.com/typeddjango/djangorestframework-stubs/releases"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "45cb6eb9584b64278355bda5d15c22a347b5c5f1c4b922d30fdc8c30feb76fc1",
"md5": "0d8863cfe248baf30f9a1712dd32a329",
"sha256": "0c8f05469473264603e450619d0466c3e4012ebed124cc0d52ac04dfa32ace00"
},
"downloads": -1,
"filename": "djangorestframework_stubs-3.16.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0d8863cfe248baf30f9a1712dd32a329",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 54697,
"upload_time": "2025-07-15T12:28:41",
"upload_time_iso_8601": "2025-07-15T12:28:41.378364Z",
"url": "https://files.pythonhosted.org/packages/45/cb/6eb9584b64278355bda5d15c22a347b5c5f1c4b922d30fdc8c30feb76fc1/djangorestframework_stubs-3.16.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5ac0c671b8a95534454327335f6c2441f101bc6d63a2c772677ab95e5e899ed6",
"md5": "a54b98cae3f6854fdf13055bd7aa60a4",
"sha256": "8e2662e2a751de5f535fbf7be03b534eb00a89bb9f1937d11a73f568dfb23dd1"
},
"downloads": -1,
"filename": "djangorestframework_stubs-3.16.1.tar.gz",
"has_sig": false,
"md5_digest": "a54b98cae3f6854fdf13055bd7aa60a4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 34824,
"upload_time": "2025-07-15T12:28:42",
"upload_time_iso_8601": "2025-07-15T12:28:42.651419Z",
"url": "https://files.pythonhosted.org/packages/5a/c0/c671b8a95534454327335f6c2441f101bc6d63a2c772677ab95e5e899ed6/djangorestframework_stubs-3.16.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-15 12:28:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "typeddjango",
"github_project": "djangorestframework-stubs",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "djangorestframework-stubs"
}