Merge pull request #207 from bogdal/feature/related-objects

Support for Django 1.10
This commit is contained in:
Carl Meyer 2016-02-08 16:36:08 -07:00
commit bb04069f01
2 changed files with 20 additions and 5 deletions

View file

@ -6,6 +6,9 @@ master (unreleased)
* Drop support for Python 3.2.
* Add support for Django 1.10.
2.4 (2015-12-03)
----------------

View file

@ -1,7 +1,7 @@
from __future__ import unicode_literals
import django
from django.db import models
from django.db.models.fields.related import OneToOneField
from django.db.models.fields.related import OneToOneField, OneToOneRel
from django.db.models.query import QuerySet
from django.core.exceptions import ObjectDoesNotExist
@ -101,12 +101,20 @@ class InheritanceQuerySetMixin(object):
recursively, returning a `list` of strings representing the
relations for select_related
"""
if django.VERSION < (1, 8):
related_objects = model._meta.get_all_related_objects()
else:
related_objects = [
f for f in model._meta.get_fields()
if isinstance(f, OneToOneRel)]
rels = [
rel for rel in model._meta.get_all_related_objects()
rel for rel in related_objects
if isinstance(rel.field, OneToOneField)
and issubclass(rel.field.model, model)
and model is not rel.field.model
]
subclasses = []
if levels:
levels -= 1
@ -135,12 +143,16 @@ class InheritanceQuerySetMixin(object):
if levels:
levels -= 1
while parent_link is not None:
ancestry.insert(0, parent_link.related.get_accessor_name())
if django.VERSION < (1, 8):
related = parent_link.related
else:
related = parent_link.rel
ancestry.insert(0, related.get_accessor_name())
if levels or levels is None:
if django.VERSION < (1, 8):
parent_model = parent_link.related.parent_model
parent_model = related.parent_model
else:
parent_model = parent_link.related.model
parent_model = related.model
parent_link = parent_model._meta.get_ancestor_link(
self.model)
else: