121 lines
4.5 KiB
Plaintext
121 lines
4.5 KiB
Plaintext
![]() |
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).
|
||
|
|
||
|
|