diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 8de3112..f429af5 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -222,7 +222,7 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)): Returns a QuerySet of all model instances that can be edited by the admin site. This is used by changelist_view. """ - qs = self.model._default_manager.get_query_set() + qs = self.model._default_manager.get_queryset() # TODO: this should be handled by some parameter to the ChangeList. ordering = self.get_ordering(request) if ordering: @@ -1187,7 +1187,7 @@ class ModelAdmin(BaseModelAdmin): if (actions and request.method == 'POST' and 'index' in request.POST and '_save' not in request.POST): if selected: - response = self.response_action(request, queryset=cl.get_query_set(request)) + response = self.response_action(request, queryset=cl.get_queryset(request)) if response: return response else: @@ -1203,7 +1203,7 @@ class ModelAdmin(BaseModelAdmin): helpers.ACTION_CHECKBOX_NAME in request.POST and 'index' not in request.POST and '_save' not in request.POST): if selected: - response = self.response_action(request, queryset=cl.get_query_set(request)) + response = self.response_action(request, queryset=cl.get_queryset(request)) if response: return response else: diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 4b296b3..c45d5d8 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -6,7 +6,9 @@ from django.core.paginator import InvalidPage from django.core.urlresolvers import reverse from django.db import models from django.db.models.fields import FieldDoesNotExist +from django.utils import six from django.utils.datastructures import SortedDict +from django.utils.deprecation import DeprecatedGetQuerySet from django.utils.encoding import force_str, force_text from django.utils.translation import ugettext, ugettext_lazy from django.utils.http import urlencode @@ -33,7 +35,7 @@ IGNORED_PARAMS = ( EMPTY_CHANGELIST_VALUE = ugettext_lazy('(None)') -class ChangeList(object): +class ChangeList(six.with_metaclass(DeprecatedGetQuerySet)): def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields, list_select_related, list_per_page, list_max_show_all, list_editable, model_admin): @@ -70,7 +72,7 @@ class ChangeList(object): else: self.list_editable = list_editable self.query = request.GET.get(SEARCH_VAR, '') - self.query_set = self.get_query_set(request) + self.query_set = self.get_queryset(request) self.get_results(request) if self.is_popup: title = ugettext('Select %s') @@ -297,7 +299,7 @@ class ChangeList(object): ordering_fields[idx] = 'desc' if pfx == '-' else 'asc' return ordering_fields - def get_query_set(self, request): + def get_queryset(self, request): # First, we collect all the declared list filters. (self.filter_specs, self.has_filters, remaining_lookup_params, use_distinct) = self.get_filters(request) diff --git a/django/contrib/comments/managers.py b/django/contrib/comments/managers.py index bc0fc5f..6562004 100644 --- a/django/contrib/comments/managers.py +++ b/django/contrib/comments/managers.py @@ -8,7 +8,7 @@ class CommentManager(models.Manager): """ QuerySet for all comments currently in the moderation queue. """ - return self.get_query_set().filter(is_public=False, is_removed=False) + return self.get_queryset().filter(is_public=False, is_removed=False) def for_model(self, model): """ @@ -16,7 +16,7 @@ class CommentManager(models.Manager): a class). """ ct = ContentType.objects.get_for_model(model) - qs = self.get_query_set().filter(content_type=ct) + qs = self.get_queryset().filter(content_type=ct) if isinstance(model, models.Model): qs = qs.filter(object_pk=force_text(model._get_pk_val())) return qs diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py index 4d4eb23..900c08f 100644 --- a/django/contrib/comments/templatetags/comments.py +++ b/django/contrib/comments/templatetags/comments.py @@ -3,11 +3,14 @@ from django.template.loader import render_to_string from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.contrib import comments +from django.utils import six +from django.utils.deprecation import DeprecatedGetQuerySet from django.utils.encoding import smart_text register = template.Library() -class BaseCommentNode(template.Node): + +class BaseCommentNode(six.with_metaclass(DeprecatedGetQuerySet, template.Node)): """ Base helper class (abstract) for handling the get_comment_* template tags. Looks a bit strange, but the subclasses below should make this a bit more @@ -64,11 +67,11 @@ class BaseCommentNode(template.Node): self.comment = comment def render(self, context): - qs = self.get_query_set(context) + qs = self.get_queryset(context) context[self.as_varname] = self.get_context_value_from_queryset(context, qs) return '' - def get_query_set(self, context): + def get_queryset(self, context): ctype, object_pk = self.get_target_ctype_pk(context) if not object_pk: return self.comment_model.objects.none() @@ -205,7 +208,7 @@ class RenderCommentListNode(CommentListNode): "comments/%s/list.html" % ctype.app_label, "comments/list.html" ] - qs = self.get_query_set(context) + qs = self.get_queryset(context) context.push() liststr = render_to_string(template_search_list, { "comment_list" : self.get_context_value_from_queryset(context, qs) diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py index 20ff704..9624964 100644 --- a/django/contrib/contenttypes/generic.py +++ b/django/contrib/contenttypes/generic.py @@ -316,12 +316,12 @@ def create_generic_related_manager(superclass): '%s__exact' % object_id_field_name: instance._get_pk_val(), } - def get_query_set(self): + def get_queryset(self): try: return self.instance._prefetched_objects_cache[self.prefetch_cache_name] except (AttributeError, KeyError): db = self._db or router.db_for_read(self.model, instance=self.instance) - return super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**self.core_filters) + return super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**self.core_filters) def get_prefetch_query_set(self, instances): db = self._db or router.db_for_read(self.model, instance=instances[0]) @@ -330,7 +330,7 @@ def create_generic_related_manager(superclass): '%s__in' % self.object_id_field_name: set(obj._get_pk_val() for obj in instances) } - qs = super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**query) + qs = super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**query) # We (possibly) need to convert object IDs to the type of the # instances' PK in order to match up instances: object_id_converter = instances[0]._meta.pk.to_python diff --git a/django/contrib/gis/db/models/manager.py b/django/contrib/gis/db/models/manager.py index 61fb821..bbcbb57 100644 --- a/django/contrib/gis/db/models/manager.py +++ b/django/contrib/gis/db/models/manager.py @@ -1,6 +1,7 @@ from django.db.models.manager import Manager from django.contrib.gis.db.models.query import GeoQuerySet + class GeoManager(Manager): "Overrides Manager to return Geographic QuerySets." @@ -9,95 +10,95 @@ class GeoManager(Manager): # properly. use_for_related_fields = True - def get_query_set(self): + def get_queryset(self): return GeoQuerySet(self.model, using=self._db) def area(self, *args, **kwargs): - return self.get_query_set().area(*args, **kwargs) + return self.get_queryset().area(*args, **kwargs) def centroid(self, *args, **kwargs): - return self.get_query_set().centroid(*args, **kwargs) + return self.get_queryset().centroid(*args, **kwargs) def collect(self, *args, **kwargs): - return self.get_query_set().collect(*args, **kwargs) + return self.get_queryset().collect(*args, **kwargs) def difference(self, *args, **kwargs): - return self.get_query_set().difference(*args, **kwargs) + return self.get_queryset().difference(*args, **kwargs) def distance(self, *args, **kwargs): - return self.get_query_set().distance(*args, **kwargs) + return self.get_queryset().distance(*args, **kwargs) def envelope(self, *args, **kwargs): - return self.get_query_set().envelope(*args, **kwargs) + return self.get_queryset().envelope(*args, **kwargs) def extent(self, *args, **kwargs): - return self.get_query_set().extent(*args, **kwargs) + return self.get_queryset().extent(*args, **kwargs) def extent3d(self, *args, **kwargs): - return self.get_query_set().extent3d(*args, **kwargs) + return self.get_queryset().extent3d(*args, **kwargs) def force_rhr(self, *args, **kwargs): - return self.get_query_set().force_rhr(*args, **kwargs) + return self.get_queryset().force_rhr(*args, **kwargs) def geohash(self, *args, **kwargs): - return self.get_query_set().geohash(*args, **kwargs) + return self.get_queryset().geohash(*args, **kwargs) def geojson(self, *args, **kwargs): - return self.get_query_set().geojson(*args, **kwargs) + return self.get_queryset().geojson(*args, **kwargs) def gml(self, *args, **kwargs): - return self.get_query_set().gml(*args, **kwargs) + return self.get_queryset().gml(*args, **kwargs) def intersection(self, *args, **kwargs): - return self.get_query_set().intersection(*args, **kwargs) + return self.get_queryset().intersection(*args, **kwargs) def kml(self, *args, **kwargs): - return self.get_query_set().kml(*args, **kwargs) + return self.get_queryset().kml(*args, **kwargs) def length(self, *args, **kwargs): - return self.get_query_set().length(*args, **kwargs) + return self.get_queryset().length(*args, **kwargs) def make_line(self, *args, **kwargs): - return self.get_query_set().make_line(*args, **kwargs) + return self.get_queryset().make_line(*args, **kwargs) def mem_size(self, *args, **kwargs): - return self.get_query_set().mem_size(*args, **kwargs) + return self.get_queryset().mem_size(*args, **kwargs) def num_geom(self, *args, **kwargs): - return self.get_query_set().num_geom(*args, **kwargs) + return self.get_queryset().num_geom(*args, **kwargs) def num_points(self, *args, **kwargs): - return self.get_query_set().num_points(*args, **kwargs) + return self.get_queryset().num_points(*args, **kwargs) def perimeter(self, *args, **kwargs): - return self.get_query_set().perimeter(*args, **kwargs) + return self.get_queryset().perimeter(*args, **kwargs) def point_on_surface(self, *args, **kwargs): - return self.get_query_set().point_on_surface(*args, **kwargs) + return self.get_queryset().point_on_surface(*args, **kwargs) def reverse_geom(self, *args, **kwargs): - return self.get_query_set().reverse_geom(*args, **kwargs) + return self.get_queryset().reverse_geom(*args, **kwargs) def scale(self, *args, **kwargs): - return self.get_query_set().scale(*args, **kwargs) + return self.get_queryset().scale(*args, **kwargs) def snap_to_grid(self, *args, **kwargs): - return self.get_query_set().snap_to_grid(*args, **kwargs) + return self.get_queryset().snap_to_grid(*args, **kwargs) def svg(self, *args, **kwargs): - return self.get_query_set().svg(*args, **kwargs) + return self.get_queryset().svg(*args, **kwargs) def sym_difference(self, *args, **kwargs): - return self.get_query_set().sym_difference(*args, **kwargs) + return self.get_queryset().sym_difference(*args, **kwargs) def transform(self, *args, **kwargs): - return self.get_query_set().transform(*args, **kwargs) + return self.get_queryset().transform(*args, **kwargs) def translate(self, *args, **kwargs): - return self.get_query_set().translate(*args, **kwargs) + return self.get_queryset().translate(*args, **kwargs) def union(self, *args, **kwargs): - return self.get_query_set().union(*args, **kwargs) + return self.get_queryset().union(*args, **kwargs) def unionagg(self, *args, **kwargs): - return self.get_query_set().unionagg(*args, **kwargs) + return self.get_queryset().unionagg(*args, **kwargs) diff --git a/django/contrib/sites/managers.py b/django/contrib/sites/managers.py index 3df485a..449e081 100644 --- a/django/contrib/sites/managers.py +++ b/django/contrib/sites/managers.py @@ -2,6 +2,7 @@ from django.conf import settings from django.db import models from django.db.models.fields import FieldDoesNotExist + class CurrentSiteManager(models.Manager): "Use this to limit objects to those associated with the current site." def __init__(self, field_name=None): @@ -35,7 +36,7 @@ class CurrentSiteManager(models.Manager): (self.__class__.__name__, self.__field_name, self.model._meta.object_name)) self.__is_validated = True - def get_query_set(self): + def get_queryset(self): if not self.__is_validated: self._validate_field_name() - return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID}) + return super(CurrentSiteManager, self).get_queryset().filter(**{self.__field_name + '__id__exact': settings.SITE_ID}) diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index bd2e288..7f2e81c 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1,5 +1,7 @@ from operator import attrgetter +from django import forms +from django.core import exceptions from django.db import connection, router from django.db.backends import util from django.db.models import signals, get_model @@ -11,10 +13,10 @@ from django.db.models.query_utils import QueryWrapper from django.db.models.deletion import CASCADE from django.utils.encoding import smart_text from django.utils import six +from django.utils.deprecation import DeprecatedGetQuerySet from django.utils.translation import ugettext_lazy as _, string_concat from django.utils.functional import curry, cached_property -from django.core import exceptions -from django import forms + RECURSIVE_RELATIONSHIP_CONSTANT = 'self' @@ -225,7 +227,7 @@ class RelatedField(object): return self.rel.related_name or self.opts.model_name -class SingleRelatedObjectDescriptor(object): +class SingleRelatedObjectDescriptor(six.with_metaclass(DeprecatedGetQuerySet)): # This class provides the functionality that makes the related-object # managers available as attributes on a model class, for fields that have # a single "remote" value, on the class pointed to by a related field. @@ -238,7 +240,7 @@ class SingleRelatedObjectDescriptor(object): def is_cached(self, instance): return hasattr(instance, self.cache_name) - def get_query_set(self, **db_hints): + def get_queryset(self, **db_hints): db = router.db_for_read(self.related.model, **db_hints) return self.related.model._base_manager.using(db) @@ -247,7 +249,7 @@ class SingleRelatedObjectDescriptor(object): instance_attr = lambda obj: obj._get_pk_val() instances_dict = dict((instance_attr(inst), inst) for inst in instances) params = {'%s__pk__in' % self.related.field.name: list(instances_dict)} - qs = self.get_query_set(instance=instances[0]).filter(**params) + qs = self.get_queryset(instance=instances[0]).filter(**params) # Since we're going to assign directly in the cache, # we must manage the reverse relation cache manually. rel_obj_cache_name = self.related.field.get_cache_name() @@ -268,7 +270,7 @@ class SingleRelatedObjectDescriptor(object): else: params = {'%s__pk' % self.related.field.name: related_pk} try: - rel_obj = self.get_query_set(instance=instance).get(**params) + rel_obj = self.get_queryset(instance=instance).get(**params) except self.related.model.DoesNotExist: rel_obj = None else: @@ -321,7 +323,7 @@ class SingleRelatedObjectDescriptor(object): setattr(value, self.related.field.get_cache_name(), instance) -class ReverseSingleRelatedObjectDescriptor(object): +class ReverseSingleRelatedObjectDescriptor(six.with_metaclass(DeprecatedGetQuerySet)): # This class provides the functionality that makes the related-object # managers available as attributes on a model class, for fields that have # a single "remote" value, on the class that defines the related field. @@ -334,7 +336,7 @@ class ReverseSingleRelatedObjectDescriptor(object): def is_cached(self, instance): return hasattr(instance, self.cache_name) - def get_query_set(self, **db_hints): + def get_queryset(self, **db_hints): db = router.db_for_read(self.field.rel.to, **db_hints) rel_mgr = self.field.rel.to._default_manager # If the related manager indicates that it should be used for @@ -353,7 +355,7 @@ class ReverseSingleRelatedObjectDescriptor(object): params = {'%s__pk__in' % self.field.rel.field_name: list(instances_dict)} else: params = {'%s__in' % self.field.rel.field_name: list(instances_dict)} - qs = self.get_query_set(instance=instances[0]).filter(**params) + qs = self.get_queryset(instance=instances[0]).filter(**params) # Since we're going to assign directly in the cache, # we must manage the reverse relation cache manually. if not self.field.rel.multiple: @@ -378,7 +380,7 @@ class ReverseSingleRelatedObjectDescriptor(object): params = {'%s__%s' % (self.field.rel.field_name, other_field.rel.field_name): val} else: params = {'%s__exact' % self.field.rel.field_name: val} - qs = self.get_query_set(instance=instance) + qs = self.get_queryset(instance=instance) # Assuming the database enforces foreign keys, this won't fail. rel_obj = qs.get(**params) if not self.field.rel.multiple: @@ -490,12 +492,12 @@ class ForeignRelatedObjectsDescriptor(object): } self.model = rel_model - def get_query_set(self): + def get_queryset(self): try: return self.instance._prefetched_objects_cache[rel_field.related_query_name()] except (AttributeError, KeyError): db = self._db or router.db_for_read(self.model, instance=self.instance) - qs = super(RelatedManager, self).get_query_set().using(db).filter(**self.core_filters) + qs = super(RelatedManager, self).get_queryset().using(db).filter(**self.core_filters) if getattr(self.instance, attname) is None: return qs.none() qs._known_related_objects = {rel_field: {self.instance.pk: self.instance}} @@ -507,7 +509,7 @@ class ForeignRelatedObjectsDescriptor(object): instances_dict = dict((instance_attr(inst), inst) for inst in instances) db = self._db or router.db_for_read(self.model, instance=instances[0]) query = {'%s__%s__in' % (rel_field.name, attname): list(instances_dict)} - qs = super(RelatedManager, self).get_query_set().using(db).filter(**query) + qs = super(RelatedManager, self).get_queryset().using(db).filter(**query) # Since we just bypassed this class' get_query_set(), we must manage # the reverse relation manually. for rel_obj in qs: @@ -602,12 +604,12 @@ def create_many_related_manager(superclass, rel): else: return obj.pk - def get_query_set(self): + def get_queryset(self): try: return self.instance._prefetched_objects_cache[self.prefetch_cache_name] except (AttributeError, KeyError): db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance) - return super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**self.core_filters) + return super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**self.core_filters) def get_prefetch_query_set(self, instances): instance = instances[0] @@ -615,7 +617,7 @@ def create_many_related_manager(superclass, rel): db = self._db or router.db_for_read(instance.__class__, instance=instance) query = {'%s__pk__in' % self.query_field_name: set(obj._get_pk_val() for obj in instances)} - qs = super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**query) + qs = super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**query) # M2M: need to annotate the query in order to get the primary model # that the secondary model was actually related to. We know that diff --git a/django/db/models/manager.py b/django/db/models/manager.py index cee2131..bc1724c 100644 --- a/django/db/models/manager.py +++ b/django/db/models/manager.py @@ -3,6 +3,8 @@ from django.db import router from django.db.models.query import QuerySet, insert_query, RawQuerySet from django.db.models import signals from django.db.models.fields import FieldDoesNotExist +from django.utils import six +from django.utils.deprecation import DeprecatedGetQuerySet def ensure_default_manager(sender, **kwargs): @@ -47,7 +49,7 @@ def ensure_default_manager(sender, **kwargs): signals.class_prepared.connect(ensure_default_manager) -class Manager(object): +class Manager(six.with_metaclass(DeprecatedGetQuerySet)): # Tracks each time a Manager instance is created. Used to retain order. creation_counter = 0 @@ -112,110 +114,110 @@ class Manager(object): # PROXIES TO QUERYSET # ####################### - def get_query_set(self): + def get_queryset(self): """Returns a new QuerySet object. Subclasses can override this method to easily customize the behavior of the Manager. """ return QuerySet(self.model, using=self._db) def none(self): - return self.get_query_set().none() + return self.get_queryset().none() def all(self): - return self.get_query_set() + return self.get_queryset() def count(self): - return self.get_query_set().count() + return self.get_queryset().count() def dates(self, *args, **kwargs): - return self.get_query_set().dates(*args, **kwargs) + return self.get_queryset().dates(*args, **kwargs) def distinct(self, *args, **kwargs): - return self.get_query_set().distinct(*args, **kwargs) + return self.get_queryset().distinct(*args, **kwargs) def extra(self, *args, **kwargs): - return self.get_query_set().extra(*args, **kwargs) + return self.get_queryset().extra(*args, **kwargs) def get(self, *args, **kwargs): - return self.get_query_set().get(*args, **kwargs) + return self.get_queryset().get(*args, **kwargs) def get_or_create(self, **kwargs): - return self.get_query_set().get_or_create(**kwargs) + return self.get_queryset().get_or_create(**kwargs) def create(self, **kwargs): - return self.get_query_set().create(**kwargs) + return self.get_queryset().create(**kwargs) def bulk_create(self, *args, **kwargs): - return self.get_query_set().bulk_create(*args, **kwargs) + return self.get_queryset().bulk_create(*args, **kwargs) def filter(self, *args, **kwargs): - return self.get_query_set().filter(*args, **kwargs) + return self.get_queryset().filter(*args, **kwargs) def aggregate(self, *args, **kwargs): - return self.get_query_set().aggregate(*args, **kwargs) + return self.get_queryset().aggregate(*args, **kwargs) def annotate(self, *args, **kwargs): - return self.get_query_set().annotate(*args, **kwargs) + return self.get_queryset().annotate(*args, **kwargs) def complex_filter(self, *args, **kwargs): - return self.get_query_set().complex_filter(*args, **kwargs) + return self.get_queryset().complex_filter(*args, **kwargs) def exclude(self, *args, **kwargs): - return self.get_query_set().exclude(*args, **kwargs) + return self.get_queryset().exclude(*args, **kwargs) def in_bulk(self, *args, **kwargs): - return self.get_query_set().in_bulk(*args, **kwargs) + return self.get_queryset().in_bulk(*args, **kwargs) def iterator(self, *args, **kwargs): - return self.get_query_set().iterator(*args, **kwargs) + return self.get_queryset().iterator(*args, **kwargs) def earliest(self, *args, **kwargs): - return self.get_query_set().earliest(*args, **kwargs) + return self.get_queryset().earliest(*args, **kwargs) def latest(self, *args, **kwargs): - return self.get_query_set().latest(*args, **kwargs) + return self.get_queryset().latest(*args, **kwargs) def order_by(self, *args, **kwargs): - return self.get_query_set().order_by(*args, **kwargs) + return self.get_queryset().order_by(*args, **kwargs) def select_for_update(self, *args, **kwargs): - return self.get_query_set().select_for_update(*args, **kwargs) + return self.get_queryset().select_for_update(*args, **kwargs) def select_related(self, *args, **kwargs): - return self.get_query_set().select_related(*args, **kwargs) + return self.get_queryset().select_related(*args, **kwargs) def prefetch_related(self, *args, **kwargs): - return self.get_query_set().prefetch_related(*args, **kwargs) + return self.get_queryset().prefetch_related(*args, **kwargs) def values(self, *args, **kwargs): - return self.get_query_set().values(*args, **kwargs) + return self.get_queryset().values(*args, **kwargs) def values_list(self, *args, **kwargs): - return self.get_query_set().values_list(*args, **kwargs) + return self.get_queryset().values_list(*args, **kwargs) def update(self, *args, **kwargs): - return self.get_query_set().update(*args, **kwargs) + return self.get_queryset().update(*args, **kwargs) def reverse(self, *args, **kwargs): - return self.get_query_set().reverse(*args, **kwargs) + return self.get_queryset().reverse(*args, **kwargs) def defer(self, *args, **kwargs): - return self.get_query_set().defer(*args, **kwargs) + return self.get_queryset().defer(*args, **kwargs) def only(self, *args, **kwargs): - return self.get_query_set().only(*args, **kwargs) + return self.get_queryset().only(*args, **kwargs) def using(self, *args, **kwargs): - return self.get_query_set().using(*args, **kwargs) + return self.get_queryset().using(*args, **kwargs) def exists(self, *args, **kwargs): - return self.get_query_set().exists(*args, **kwargs) + return self.get_queryset().exists(*args, **kwargs) def _insert(self, objs, fields, **kwargs): return insert_query(self.model, objs, fields, **kwargs) def _update(self, values, **kwargs): - return self.get_query_set()._update(values, **kwargs) + return self.get_queryset()._update(values, **kwargs) def raw(self, raw_query, params=None, *args, **kwargs): return RawQuerySet(raw_query=raw_query, model=self.model, params=params, using=self._db, *args, **kwargs) @@ -262,5 +264,5 @@ class EmptyManager(Manager): super(EmptyManager, self).__init__() self.model = model - def get_query_set(self): - return super(EmptyManager, self).get_query_set().none() + def get_queryset(self): + return super(EmptyManager, self).get_queryset().none() diff --git a/django/forms/models.py b/django/forms/models.py index e2d739f..3948780 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -479,7 +479,7 @@ class BaseModelFormSet(BaseFormSet): if self.queryset is not None: qs = self.queryset else: - qs = self.model._default_manager.get_query_set() + qs = self.model._default_manager.get_queryset() # If the queryset isn't already ordered we need to add an # artificial ordering here to make sure that all formsets @@ -674,9 +674,9 @@ class BaseModelFormSet(BaseFormSet): except IndexError: pk_value = None if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey): - qs = pk.rel.to._default_manager.get_query_set() + qs = pk.rel.to._default_manager.get_queryset() else: - qs = self.model._default_manager.get_query_set() + qs = self.model._default_manager.get_queryset() qs = qs.using(form.instance._state.db) if form._meta.widgets: widget = form._meta.widgets.get(self._pk_field.name, HiddenInput) diff --git a/django/utils/deprecation.py b/django/utils/deprecation.py new file mode 100644 index 0000000..96cefb4 --- /dev/null +++ b/django/utils/deprecation.py @@ -0,0 +1,57 @@ +from __future__ import unicode_literals +import warnings + +from django.core.exceptions import ImproperlyConfigured +from django.utils.unittest.compatibility import wraps + + +def renamed_method_factory(old, new, warning=PendingDeprecationWarning): + """ + Create a type to handle the deprecation path of a renamed method. + + Does the following: + 1) Issue a warning on class creation if `old` is defined. + 2) Raise an `ImproperlyConfigured` error if both `old` and + `new` are defined. + 3) Define a `new` method if not present. + 4) Define or wrap the existing `old` to complain when called. + """ + def renamed_method_complain(name, deprecated): + @wraps(deprecated) + def complain(*args, **kwargs): + warnings.warn( + "`%s.%s` is deprecated, use " + "`%s` instead." % (name, old, new), + warning, 2) + return deprecated(*args, **kwargs) + return complain + class RenamedMethod(type): + def __new__(cls, name, bases, attrs): + deprecated = attrs.get(old) + renamed = attrs.get(new) + if deprecated: + if renamed: + raise ImproperlyConfigured( + "'Class `%s` should either define `%s` or " + "`%s` not both.'" % (name, new, old)) + else: + attrs[new] = deprecated + warnings.warn( + "`%s.%s` method should be " + "renamed `%s`." % (name, old, new), + warning, 2) + deprecated = renamed_method_complain(name, deprecated) + elif renamed: + deprecated = renamed_method_complain(name, renamed) + if deprecated: + attrs[old] = deprecated + type_ = type.__new__(cls, name, bases, attrs) + # TODO: Handle type_.__mro__ to look for possible mixins + return type_ + return RenamedMethod + + +# See #15363 for more details. +DeprecatedGetQuerySet = renamed_method_factory('get_query_set', 'get_queryset') +#DeprecatedGetPrefetchQuerySet = renamed_method_factory('get_prefetch_query_set', 'get_prefetch_queryset') +#DeprecatedQueryset = renamed_method_factory('queryset', 'get_queryset') diff --git a/tests/modeltests/custom_managers/models.py b/tests/modeltests/custom_managers/models.py index de7c177..2f5e62f 100644 --- a/tests/modeltests/custom_managers/models.py +++ b/tests/modeltests/custom_managers/models.py @@ -30,11 +30,11 @@ class Person(models.Model): def __str__(self): return "%s %s" % (self.first_name, self.last_name) -# An example of a custom manager that sets get_query_set(). +# An example of a custom manager that sets get_queryset(). class PublishedBookManager(models.Manager): - def get_query_set(self): - return super(PublishedBookManager, self).get_query_set().filter(is_published=True) + def get_queryset(self): + return super(PublishedBookManager, self).get_queryset().filter(is_published=True) @python_2_unicode_compatible class Book(models.Model): @@ -50,8 +50,8 @@ class Book(models.Model): # An example of providing multiple custom managers. class FastCarManager(models.Manager): - def get_query_set(self): - return super(FastCarManager, self).get_query_set().filter(top_speed__gt=150) + def get_queryset(self): + return super(FastCarManager, self).get_queryset().filter(top_speed__gt=150) @python_2_unicode_compatible class Car(models.Model): diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py index 8bd3501..976716f 100644 --- a/tests/modeltests/fixtures/models.py +++ b/tests/modeltests/fixtures/models.py @@ -78,8 +78,8 @@ class Person(models.Model): return (self.name,) class SpyManager(PersonManager): - def get_query_set(self): - return super(SpyManager, self).get_query_set().filter(cover_blown=False) + def get_queryset(self): + return super(SpyManager, self).get_queryset().filter(cover_blown=False) class Spy(Person): objects = SpyManager() diff --git a/tests/modeltests/generic_relations/models.py b/tests/modeltests/generic_relations/models.py index 18d7623..34dc8d3 100644 --- a/tests/modeltests/generic_relations/models.py +++ b/tests/modeltests/generic_relations/models.py @@ -88,8 +88,8 @@ class Mineral(models.Model): return self.name class GeckoManager(models.Manager): - def get_query_set(self): - return super(GeckoManager, self).get_query_set().filter(has_tail=True) + def get_queryset(self): + return super(GeckoManager, self).get_queryset().filter(has_tail=True) class Gecko(models.Model): has_tail = models.BooleanField() diff --git a/tests/modeltests/get_object_or_404/models.py b/tests/modeltests/get_object_or_404/models.py index bda0605..bb9aa60 100644 --- a/tests/modeltests/get_object_or_404/models.py +++ b/tests/modeltests/get_object_or_404/models.py @@ -22,8 +22,8 @@ class Author(models.Model): return self.name class ArticleManager(models.Manager): - def get_query_set(self): - return super(ArticleManager, self).get_query_set().filter(authors__name__icontains='sir') + def get_queryset(self): + return super(ArticleManager, self).get_queryset().filter(authors__name__icontains='sir') @python_2_unicode_compatible class Article(models.Model): diff --git a/tests/modeltests/prefetch_related/models.py b/tests/modeltests/prefetch_related/models.py index e58997d..81c5698 100644 --- a/tests/modeltests/prefetch_related/models.py +++ b/tests/modeltests/prefetch_related/models.py @@ -87,8 +87,8 @@ class Qualification(models.Model): class TeacherManager(models.Manager): - def get_query_set(self): - return super(TeacherManager, self).get_query_set().prefetch_related('qualifications') + def get_queryset(self): + return super(TeacherManager, self).get_queryset().prefetch_related('qualifications') @python_2_unicode_compatible diff --git a/tests/modeltests/proxy_models/models.py b/tests/modeltests/proxy_models/models.py index 6c962aa..ffb3665 100644 --- a/tests/modeltests/proxy_models/models.py +++ b/tests/modeltests/proxy_models/models.py @@ -10,12 +10,12 @@ from django.utils.encoding import python_2_unicode_compatible # A couple of managers for testing managing overriding in proxy model cases. class PersonManager(models.Manager): - def get_query_set(self): - return super(PersonManager, self).get_query_set().exclude(name="fred") + def get_queryset(self): + return super(PersonManager, self).get_queryset().exclude(name="fred") class SubManager(models.Manager): - def get_query_set(self): - return super(SubManager, self).get_query_set().exclude(name="wilma") + def get_queryset(self): + return super(SubManager, self).get_queryset().exclude(name="wilma") @python_2_unicode_compatible class Person(models.Model): diff --git a/tests/regressiontests/admin_changelist/models.py b/tests/regressiontests/admin_changelist/models.py index 4ba2f9c..786b438 100644 --- a/tests/regressiontests/admin_changelist/models.py +++ b/tests/regressiontests/admin_changelist/models.py @@ -74,8 +74,8 @@ class UnorderedObject(models.Model): class OrderedObjectManager(models.Manager): - def get_query_set(self): - return super(OrderedObjectManager, self).get_query_set().order_by('number') + def get_queryset(self): + return super(OrderedObjectManager, self).get_queryset().order_by('number') class OrderedObject(models.Model): """ diff --git a/tests/regressiontests/admin_changelist/tests.py b/tests/regressiontests/admin_changelist/tests.py index 7a3a5c0..2f94cc7 100644 --- a/tests/regressiontests/admin_changelist/tests.py +++ b/tests/regressiontests/admin_changelist/tests.py @@ -39,7 +39,7 @@ class ChangeListTests(TestCase): def test_select_related_preserved(self): """ - Regression test for #10348: ChangeList.get_query_set() shouldn't + Regression test for #10348: ChangeList.get_queryset() shouldn't overwrite a custom select_related provided by ModelAdmin.queryset(). """ m = ChildAdmin(Child, admin.site) diff --git a/tests/regressiontests/admin_filters/tests.py b/tests/regressiontests/admin_filters/tests.py index 11f792e..d25c8f4 100644 --- a/tests/regressiontests/admin_filters/tests.py +++ b/tests/regressiontests/admin_filters/tests.py @@ -183,7 +183,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book]) # Make sure the correct choice is selected @@ -200,7 +200,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) if (self.today.year, self.today.month) == (self.one_week_ago.year, self.one_week_ago.month): # In case one week ago is in the same month. self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book]) @@ -221,7 +221,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) if self.today.year == self.one_week_ago.year: # In case one week ago is in the same year. self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book]) @@ -242,7 +242,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book]) # Make sure the correct choice is selected @@ -266,7 +266,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.django_book]) # Make sure the last choice is None and is selected @@ -293,7 +293,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.gipsy_book]) # Make sure the last choice is None and is selected @@ -321,7 +321,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.django_book, self.bio_book, self.djangonaut_book]) # Make sure the last choice is None and is selected @@ -349,7 +349,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, User, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.lisa]) # Make sure the last choice is None and is selected @@ -374,7 +374,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, User, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.alfred]) # Make sure the last choice is None and is selected @@ -410,7 +410,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.bio_book]) # Make sure the correct choice is selected @@ -424,7 +424,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book]) # Make sure the correct choice is selected @@ -438,7 +438,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.django_book]) # Make sure the correct choice is selected @@ -457,7 +457,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), list(Book.objects.all().order_by('-id'))) # Make sure the correct choice is selected @@ -474,7 +474,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), []) # Make sure the correct choice is selected @@ -491,7 +491,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.bio_book]) # Make sure the correct choice is selected @@ -508,7 +508,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book]) # Make sure the correct choice is selected @@ -525,7 +525,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.djangonaut_book]) # Make sure the correct choices are selected @@ -615,7 +615,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.bio_book]) filterspec = changelist.get_filters(request)[0][-1] @@ -637,7 +637,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.bio_book]) # Make sure the correct choice is selected @@ -654,7 +654,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Book, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.bio_book]) # Make sure the correct choice is selected @@ -676,7 +676,7 @@ class ListFiltersTests(TestCase): request = self.request_factory.get('/', {'department': self.john.pk}) changelist = self.get_changelist(request, Employee, modeladmin) - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.john]) @@ -698,7 +698,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Employee, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.jack, self.john]) filterspec = changelist.get_filters(request)[0][-1] @@ -723,7 +723,7 @@ class ListFiltersTests(TestCase): changelist = self.get_changelist(request, Employee, modeladmin) # Make sure the correct queryset is returned - queryset = changelist.get_query_set(request) + queryset = changelist.get_queryset(request) self.assertEqual(list(queryset), [self.john]) filterspec = changelist.get_filters(request)[0][-1] diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py index 435883e..2d85e54 100644 --- a/tests/regressiontests/admin_views/admin.py +++ b/tests/regressiontests/admin_views/admin.py @@ -417,7 +417,7 @@ class PostAdmin(admin.ModelAdmin): class CustomChangeList(ChangeList): - def get_query_set(self, request): + def get_queryset(self, request): return self.root_query_set.filter(pk=9999) # Does not exist diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py index 2977b86..ae19d58 100644 --- a/tests/regressiontests/admin_widgets/models.py +++ b/tests/regressiontests/admin_widgets/models.py @@ -37,8 +37,8 @@ class Album(models.Model): return self.name class HiddenInventoryManager(models.Manager): - def get_query_set(self): - return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False) + def get_queryset(self): + return super(HiddenInventoryManager, self).get_queryset().filter(hidden=False) @python_2_unicode_compatible class Inventory(models.Model): diff --git a/tests/regressiontests/custom_managers_regress/models.py b/tests/regressiontests/custom_managers_regress/models.py index 71073f0..95cf6e8 100644 --- a/tests/regressiontests/custom_managers_regress/models.py +++ b/tests/regressiontests/custom_managers_regress/models.py @@ -10,8 +10,8 @@ class RestrictedManager(models.Manager): """ A manager that filters out non-public instances. """ - def get_query_set(self): - return super(RestrictedManager, self).get_query_set().filter(is_public=True) + def get_queryset(self): + return super(RestrictedManager, self).get_queryset().filter(is_public=True) @python_2_unicode_compatible class RelatedModel(models.Model): diff --git a/tests/regressiontests/deprecation/__init__.py b/tests/regressiontests/deprecation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/regressiontests/deprecation/models.py b/tests/regressiontests/deprecation/models.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/regressiontests/deprecation/tests.py b/tests/regressiontests/deprecation/tests.py new file mode 100644 index 0000000..32d5a8a --- /dev/null +++ b/tests/regressiontests/deprecation/tests.py @@ -0,0 +1,130 @@ +from __future__ import unicode_literals +import warnings + +from django.test.testcases import SimpleTestCase +from django.utils import six +from django.utils.deprecation import renamed_method_factory +from django.core.exceptions import ImproperlyConfigured + + +RenamedMethod = renamed_method_factory('old', 'new') + + +class RenamedMethodTest(SimpleTestCase): + def test_class_definition_warnings(self): + """ + Ensure a warning is raised upon class definition to suggest renaming + the faulty method. + """ + with warnings.catch_warnings(record=True) as recorded: + warnings.simplefilter('always') + class Manager(six.with_metaclass(RenamedMethod)): + def old(self): + pass + self.assertEqual(len(recorded), 1) + msg = str(recorded[0].message) + self.assertEqual(msg, + '`Manager.old` method should be renamed `new`.') + + def test_new_defined(self): + """ + Ensure `old` complains and not `new` when only + `new` is defined. + """ + with warnings.catch_warnings(record=True) as recorded: + warnings.simplefilter('ignore') + class Manager(six.with_metaclass(RenamedMethod)): + def new(self): + pass + warnings.simplefilter('always') + manager = Manager() + manager.new() + self.assertEqual(len(recorded), 0) + manager.old() + self.assertEqual(len(recorded), 1) + msg = str(recorded.pop().message) + self.assertEqual(msg, + '`Manager.old` is deprecated, use `new` instead.') + + def test_old_defined(self): + """ + Ensure `old` complains and not `new` when only + `old` is defined. + """ + with warnings.catch_warnings(record=True) as recorded: + warnings.simplefilter('ignore') + class Manager(six.with_metaclass(RenamedMethod)): + def old(self): + pass + warnings.simplefilter('always') + manager = Manager() + manager.new() + self.assertEqual(len(recorded), 0) + manager.old() + self.assertEqual(len(recorded), 1) + msg = str(recorded.pop().message) + self.assertEqual(msg, + '`Manager.old` is deprecated, use `new` instead.') + + def test_deprecated_subclass_renamed(self): + """ + Ensure the correct warnings are raised when a class that didn't rename + `old` subclass one that did. + """ + with warnings.catch_warnings(record=True) as recorded: + warnings.simplefilter('ignore') + class Renamed(six.with_metaclass(RenamedMethod)): + def new(self): + pass + class Deprecated(Renamed): + def old(self): + super(Deprecated, self).old() + warnings.simplefilter('always') + deprecated = Deprecated() + deprecated.new() + self.assertEqual(len(recorded), 1) + msg = str(recorded.pop().message) + self.assertEqual(msg, + '`Renamed.old` is deprecated, use `new` instead.') + deprecated.old() + self.assertEqual(len(recorded), 2) + msgs = [str(warning.message) for warning in recorded] + self.assertEqual(msgs, [ + '`Deprecated.old` is deprecated, use `new` instead.', + '`Renamed.old` is deprecated, use `new` instead.']) + + def test_renamed_subclass_deprecated(self): + """ + Ensure the correct warnings are raised when a class that renamed + `old` subclass one that didn't. + """ + with warnings.catch_warnings(record=True) as recorded: + warnings.simplefilter('ignore') + class Deprecated(six.with_metaclass(RenamedMethod)): + def old(self): + pass + class Renamed(Deprecated): + def new(self): + super(Renamed, self).new() + warnings.simplefilter('always') + renamed = Renamed() + renamed.new() + self.assertEqual(len(recorded), 0) + renamed.old() + self.assertEqual(len(recorded), 1) + msg = str(recorded.pop().message) + self.assertEqual(msg, + '`Renamed.old` is deprecated, use `new` instead.') + + def test_improperly_configured(self): + """ + Ensure a significant `ImproperlyConfigured` error is raised when + both `new` and `old` are defined. + """ + msg = 'Class `Manager` should either define `new` or `old` not both.' + with self.assertRaisesMessage(ImproperlyConfigured, msg): + class Manager(six.with_metaclass(RenamedMethod)): + def new(self): + pass + def old(self): + pass \ No newline at end of file diff --git a/tests/regressiontests/managers_regress/models.py b/tests/regressiontests/managers_regress/models.py index d72970d..d8dd22e 100644 --- a/tests/regressiontests/managers_regress/models.py +++ b/tests/regressiontests/managers_regress/models.py @@ -7,18 +7,18 @@ from django.utils.encoding import python_2_unicode_compatible class OnlyFred(models.Manager): - def get_query_set(self): - return super(OnlyFred, self).get_query_set().filter(name='fred') + def get_queryset(self): + return super(OnlyFred, self).get_queryset().filter(name='fred') class OnlyBarney(models.Manager): - def get_query_set(self): - return super(OnlyBarney, self).get_query_set().filter(name='barney') + def get_queryset(self): + return super(OnlyBarney, self).get_queryset().filter(name='barney') class Value42(models.Manager): - def get_query_set(self): - return super(Value42, self).get_query_set().filter(value=42) + def get_queryset(self): + return super(Value42, self).get_queryset().filter(value=42) class AbstractBase1(models.Model): diff --git a/tests/regressiontests/modeladmin/tests.py b/tests/regressiontests/modeladmin/tests.py index b0a1812..2f3eddd 100644 --- a/tests/regressiontests/modeladmin/tests.py +++ b/tests/regressiontests/modeladmin/tests.py @@ -1074,7 +1074,7 @@ class ValidationTests(unittest.TestCase): return 'awesomeness' def get_choices(self, request): return (('bit', 'A bit awesome'), ('very', 'Very awesome'), ) - def get_query_set(self, cl, qs): + def get_queryset(self, cl, qs): return qs class ValidationTestModelAdmin(ModelAdmin): diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 16583e8..7489aeb 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -175,8 +175,8 @@ class LoopZ(models.Model): # A model and custom default manager combination. class CustomManager(models.Manager): - def get_query_set(self): - qs = super(CustomManager, self).get_query_set() + def get_queryset(self): + qs = super(CustomManager, self).get_queryset() return qs.filter(public=True, tag__name='t1') @python_2_unicode_compatible @@ -196,8 +196,8 @@ class Detail(models.Model): data = models.CharField(max_length=10) class MemberManager(models.Manager): - def get_query_set(self): - return super(MemberManager, self).get_query_set().select_related("details") + def get_queryset(self): + return super(MemberManager, self).get_queryset().select_related("details") class Member(models.Model): name = models.CharField(max_length=10) diff --git a/tests/regressiontests/reverse_single_related/models.py b/tests/regressiontests/reverse_single_related/models.py index 898be84..30ba345 100644 --- a/tests/regressiontests/reverse_single_related/models.py +++ b/tests/regressiontests/reverse_single_related/models.py @@ -2,8 +2,8 @@ from django.db import models class SourceManager(models.Manager): - def get_query_set(self): - return super(SourceManager, self).get_query_set().filter(is_public=True) + def get_queryset(self): + return super(SourceManager, self).get_queryset().filter(is_public=True) class Source(models.Model): is_public = models.BooleanField()