old_contents: # -*- coding: utf-8 -*-
  """ PolymorphicManager
      Please see README.rst or DOCS.rst or http://chrisglass.github.com/django_polymorphic/
  """
  from __future__ import unicode_literals
  import warnings
  import django
  from django.db import models
  from polymorphic.query import PolymorphicQuerySet
  
  
  class PolymorphicManager(models.Manager):
      """
      Manager for PolymorphicModel
  
      Usually not explicitly needed, except if a custom manager or
      a custom queryset class is to be used.
      """
      # Tell Django that related fields also need to use this manager:
      use_for_related_fields = True
      queryset_class = PolymorphicQuerySet
  
      def __init__(self, queryset_class=None, *args, **kwrags):
          # Up till polymorphic 0.4, the queryset class could be specified as parameter to __init__.
          # However, this doesn't work for related managers which instantiate a new version of this class.
          # Hence, for custom managers the new default is using the 'queryset_class' attribute at class level instead.
          if queryset_class:
              warnings.warn("Using PolymorphicManager(queryset_class=..) is deprecated; override the queryset_class attribute instead", DeprecationWarning)
              # For backwards compatibility, still allow the parameter:
              self.queryset_class = queryset_class
  
          super(PolymorphicManager, self).__init__(*args, **kwrags)
  
      def get_queryset(self):
          return self.queryset_class(self.model, using=self._db)
  
      # For Django 1.5
      if django.VERSION < (1, 7):
          get_query_set = get_queryset
  
      # Proxy all unknown method calls to the queryset, so that its members are
      # directly accessible as PolymorphicModel.objects.*
      # The advantage of this method is that not yet known member functions of derived querysets will be proxied as well.
      # We exclude any special functions (__) from this automatic proxying.
      def __getattr__(self, name):
          if name.startswith('__'):
              return super(PolymorphicManager, self).__getattr__(self, name)
          return getattr(self.get_queryset(), name)
  
      def __unicode__(self):
          return '%s (PolymorphicManager) using %s' % (self.__class__.__name__, self.queryset_class.__name__)
  
new_contents: # -*- coding: utf-8 -*-
  """ PolymorphicManager
      Please see README.rst or DOCS.rst or http://chrisglass.github.com/django_polymorphic/
  """
  from __future__ import unicode_literals
  import warnings
  import django
  from django.db import models
  from polymorphic.query import PolymorphicQuerySet
  
  
  class PolymorphicManager(models.Manager):
      """
      Manager for PolymorphicModel
  
      Usually not explicitly needed, except if a custom manager or
      a custom queryset class is to be used.
      """
      # Tell Django that related fields also need to use this manager:
      use_for_related_fields = True
      queryset_class = PolymorphicQuerySet
  
      def __init__(self, queryset_class=None, *args, **kwrags):
          # Up till polymorphic 0.4, the queryset class could be specified as parameter to __init__.
          # However, this doesn't work for related managers which instantiate a new version of this class.
          # Hence, for custom managers the new default is using the 'queryset_class' attribute at class level instead.
          if queryset_class:
              warnings.warn("Using PolymorphicManager(queryset_class=..) is deprecated; override the queryset_class attribute instead", DeprecationWarning)
              # For backwards compatibility, still allow the parameter:
              self.queryset_class = queryset_class
  
          super(PolymorphicManager, self).__init__(*args, **kwrags)
  
      def get_queryset(self):
          return self.queryset_class(self.model, using=self._db)
  
      # For Django 1.5
      if django.VERSION < (1, 7):
          get_query_set = get_queryset
  
      if django.VERSION >= (1,6):
          # Should not be used for Django 1.4/1.5 all all, as that breaks the RelatedManager
          def _get_queryset(self):
              return self.get_queryset()
      else:
          # Django 1.5
          def _get_queryset(self):
              return self.get_query_set()
  
      # Proxy all unknown method calls to the queryset, so that its members are
      # directly accessible as PolymorphicModel.objects.*
      # The advantage of this method is that not yet known member functions of derived querysets will be proxied as well.
      # We exclude any special functions (__) from this automatic proxying.
      def __getattr__(self, name):
          if name.startswith('__'):
              return super(PolymorphicManager, self).__getattr__(self, name)
          return getattr(self._get_queryset(), name)
  
      def __unicode__(self):
          return '%s (PolymorphicManager) using %s' % (self.__class__.__name__, self.queryset_class.__name__)
  
subject: Fix Django 1.4/1.5 issues with RelatedManager code that overrides get_query_set()