- Remove diamond inheritance tests since these test a bug in Django,
not in django_polymorphic.
- Fix spurious print message in test_primary_key_custom_field_problem(),
where uuid instances are for some reason being compared to uuid.UUID
classes. Replaced with a test that checks that the primary key values
are valid UUIDs.
- Remove Django > 1.6 conditionals wrapping the multiple inheritance
tests and model definitions, in favor of using the definitions for
Django 1.7. Django 1.7 requires a custom primary key when using concrete
model inheritance because failing to do so is potentially ambiguous. Adding
the custom primary key does not break tests in older Django versions.
Using model_cls.add_to_class() calls Manager.contribute_to_class(),
which then sets the attribute to an instance of ManagerDescriptor. In
the case of _default_manager, this behavior differs from Django's, as
_default_manager is set to the manager instance itself, not its
descriptor. This is why it is normally possible to access default_manager
from a model instance.
fixes#96
Make sure the `RelatedManager.get_query_set()` is called, which limits
the set, instead of calling `self.get_queryset()` which then returns a new queryset.
Fortunately, this only happened on proxied calls for unknown methods.
Added a test case for testing parent_link and related_name links to parent.
All tests pass should pass now (at least they do for me on django 1.5 and python 2.7)
Now uses model._meta.parents to determine superclasses. _meta.parents is a dict of superclass: field_to_superclass pairs.
By using the field name of field_to_superclass, we can work out the field to use the django_polymorphic accessor on, even if a user-specified OneToOneField to parent is is used (with parent_link=True) to get to the parent in the inheritance hierarachy.
For subclasses, the path to the subclasses can be manually specified by the user if they use a 'related_name' on the OneToOneField from the subclass to the superclass. I have changed the code to also support 'related_name' if present