polymorphic.models¶
Seamless Polymorphic Inheritance for Django Models
-
class
polymorphic.models.PolymorphicModel(*args, **kwargs)¶ Bases:
django.db.models.base.ModelAbstract base class that provides polymorphic behaviour for any model directly or indirectly derived from it.
PolymorphicModel declares one field for internal use (
polymorphic_ctype) and provides a polymorphic manager as the default manager (and as ‘objects’).-
get_real_instance()¶ Upcast an object to it’s actual type.
If a non-polymorphic manager (like base_objects) has been used to retrieve objects, then the complete object with it’s real class/type and all fields may be retrieved with this method.
Note
Each method call executes one db query (if necessary). Use the
get_real_instances()to upcast a complete list in a single efficient query.
-
get_real_instance_class()¶ Return the actual model type of the object.
If a non-polymorphic manager (like base_objects) has been used to retrieve objects, then the real class/type of these objects may be determined using this method.
-
pre_save_polymorphic(using='default')¶ Make sure the
polymorphic_ctypevalue is correctly set on this model.
-
save(*args, **kwargs)¶ Calls
pre_save_polymorphic()and saves the model.
-
polymorphic_ctype¶ The model field that stores the
ContentTypereference to the actual class.
-