Skip to main content

ABOUT

django_deferred_polymorph is an implementation of polymorphic models for Django. Like other solutions you can just fetch the base instance from your database and get the right subclass back. This means you always can rely on having all data/methods your child class would provide.

Unlike other solutions additional data is loaded by using a slightly modified version of Django’s own deferered mechanisms. This way getting the base classes issues only one SQL query, returning the subclasses with all additional data as defered field. If you attempt to access one of the deferred fields all deferred fields are loaded (unlike for Django’s default deferred fields).

django_deferred_polymorph includes two abstract base models:

  • DeferredPolymorphBaseModel as the base for every deferred model

  • SubDeferredPolymorphBaseModel which extends DeferredPolymorphBaseModel to force userd to use a subclass

Installation

First:

pip install django_deferred_polymorph

Then add 'django_deferred_polymorph' to your INSTALLED_APPS settings.

Running tests

First create a virtualenv, then install package inside the virtualenv and add the test dependencies with:

python setup.py develop
pip install -r requirements.txt

Now you can run the test suite against the currently installed version of Django with:

python runtests.py

However we support multiple versions of Django and Python. To test all relevant combinations at once you can use the following command:

tox

Changelog

0.4.0

  • Reuse registered apps so object deletion works

  • Dropped compatibility with Django < 1.7

0.3.2

  • Fix for Django 1.8 that did not set _base_manager correctly for subclasses of DeferredPolymorphBaseModel. That broke the Model.delete() method in some cases.

0.3.1

  • Adding MANIFEST.in file to define which files get included in the source distribution. CHANGES.rst was missing from that and caused an error on install.

0.3.0

  • Dropping support for Django 1.5.x and lower as we had to adept to Django’s naming scheme for get_queryset instead of get_query_set in managers.

  • Fix for Django 1.8 which uses unicode for model names in the Meta._meta object. That broke the dynamic class creation with type().

0.2.0

  • Django 1.8 support.

Metadata

Release files for django_deferred_polymorph 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django_deferred_polymorph 0.4.0
File Size Uploaded Provenance
django_deferred_polymorph-0.4.0.tar.gz 7.7 kB Without provenance Details

Release files / django_deferred_polymorph-0.4.0.tar.gz

Download URL django_deferred_polymorph-0.4.0.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5501e64f28e27461d6aa05a536beefbac68b6b58402c780be8db3630d44c892e
BLAKE2b-256 checksum
How to use checksums
353d61e63e1eb079fd3148c9438a3c3d8458c0990cea7c87fd96fb20f63176f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for django_deferred_polymorph 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page