|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- Metadata-Version: 2.1
- Name: django-polymorphic
- Version: 3.1.0
- Summary: Seamless polymorphic inheritance for Django models
- Home-page: https://github.com/django-polymorphic/django-polymorphic
- Author: Bert Constantin
- Author-email: bert.constantin@gmx.de
- Maintainer: Christopher Glass
- Maintainer-email: tribaal@ubuntu.com
- License: UNKNOWN
- Download-URL: https://github.com/django-polymorphic/django-polymorphic/tarball/master
- Keywords: django,polymorphic
- Platform: UNKNOWN
- Classifier: Development Status :: 5 - Production/Stable
- Classifier: Environment :: Web Environment
- Classifier: Framework :: Django
- Classifier: Framework :: Django :: 2.2
- Classifier: Framework :: Django :: 3.0
- Classifier: Framework :: Django :: 3.1
- Classifier: Framework :: Django :: 3.2
- Classifier: Framework :: Django :: 4.0
- Classifier: Intended Audience :: Developers
- Classifier: License :: OSI Approved :: BSD License
- Classifier: Operating System :: OS Independent
- Classifier: Programming Language :: Python :: 3
- Classifier: Programming Language :: Python :: 3 :: Only
- Classifier: Programming Language :: Python :: 3.6
- Classifier: Programming Language :: Python :: 3.7
- Classifier: Programming Language :: Python :: 3.8
- Classifier: Programming Language :: Python :: 3.9
- Classifier: Topic :: Database
- License-File: LICENSE
- License-File: AUTHORS.rst
- Requires-Dist: Django (>=2.1)
-
- .. image:: https://travis-ci.org/django-polymorphic/django-polymorphic.svg?branch=master
- :target: http://travis-ci.org/django-polymorphic/django-polymorphic
- .. image:: https://img.shields.io/pypi/v/django-polymorphic.svg
- :target: https://pypi.python.org/pypi/django-polymorphic/
- .. image:: https://img.shields.io/codecov/c/github/django-polymorphic/django-polymorphic/master.svg
- :target: https://codecov.io/github/django-polymorphic/django-polymorphic?branch=master
- .. image:: https://readthedocs.org/projects/django-polymorphic/badge/?version=stable
- :target: https://django-polymorphic.readthedocs.io/en/stable/
-
- Polymorphic Models for Django
- =============================
-
- Django-polymorphic simplifies using inherited models in Django projects.
- When a query is made at the base model, the inherited model classes are returned.
-
- When we store models that inherit from a ``Project`` model...
-
- .. code-block:: python
-
- >>> Project.objects.create(topic="Department Party")
- >>> ArtProject.objects.create(topic="Painting with Tim", artist="T. Turner")
- >>> ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
-
- ...and want to retrieve all our projects, the subclassed models are returned!
-
- .. code-block:: python
-
- >>> Project.objects.all()
- [ <Project: id 1, topic "Department Party">,
- <ArtProject: id 2, topic "Painting with Tim", artist "T. Turner">,
- <ResearchProject: id 3, topic "Swallow Aerodynamics", supervisor "Dr. Winter"> ]
-
- Using vanilla Django, we get the base class objects, which is rarely what we wanted:
-
- .. code-block:: python
-
- >>> Project.objects.all()
- [ <Project: id 1, topic "Department Party">,
- <Project: id 2, topic "Painting with Tim">,
- <Project: id 3, topic "Swallow Aerodynamics"> ]
-
- This also works when the polymorphic model is accessed via
- ForeignKeys, ManyToManyFields or OneToOneFields.
-
- Features
- --------
-
- * Full admin integration.
- * ORM integration:
-
- * support for ForeignKey, ManyToManyField, OneToOneField descriptors.
- * Filtering/ordering of inherited models (``ArtProject___artist``).
- * Filtering model types: ``instance_of(...)`` and ``not_instance_of(...)``
- * Combining querysets of different models (``qs3 = qs1 | qs2``)
- * Support for custom user-defined managers.
- * Uses the minumum amount of queries needed to fetch the inherited models.
- * Disabling polymorphic behavior when needed.
-
- While *django-polymorphic* makes subclassed models easy to use in Django,
- we still encourage to use them with caution. Each subclassed model will require
- Django to perform an ``INNER JOIN`` to fetch the model fields from the database.
- While taking this in mind, there are valid reasons for using subclassed models.
- That's what this library is designed for!
-
- The current release of *django-polymorphic* supports Django 2.1, 2.2, 3.0, 3.1
- and Python 3.5+ is supported.
- For older Django versions, install *django-polymorphic==1.3*.
-
- For more information, see the `documentation at Read the Docs <https://django-polymorphic.readthedocs.io/>`_.
-
- Installation
- ------------
-
- Install using ``pip``\ ...
-
- .. code:: bash
-
- $ pip install django-polymorphic
-
- License
- =======
-
- Django-polymorphic uses the same license as Django (BSD-like).
-
-
|