1 | diff --git a/AUTHORS b/AUTHORS
|
---|
2 | index c603833..0ee3618 100644
|
---|
3 | --- a/AUTHORS
|
---|
4 | +++ b/AUTHORS
|
---|
5 | @@ -98,6 +98,7 @@ answer newbie questions, and generally made Django that much better:
|
---|
6 | Natalia Bidart <nataliabidart@gmail.com>
|
---|
7 | Mark Biggers <biggers@utsl.com>
|
---|
8 | Paul Bissex <http://e-scribe.com/>
|
---|
9 | + Loïc Bistuer <loic.bistuer@gmail.com>
|
---|
10 | Simon Blanchard
|
---|
11 | Craig Blaszczyk <masterjakul@gmail.com>
|
---|
12 | David Blewett <david@dawninglight.net>
|
---|
13 | diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
|
---|
14 | index ff7873b..37b2157 100644
|
---|
15 | --- a/django/contrib/admin/options.py
|
---|
16 | +++ b/django/contrib/admin/options.py
|
---|
17 | @@ -28,6 +28,7 @@ from django.utils.datastructures import SortedDict
|
---|
18 | from django.utils.html import escape, escapejs
|
---|
19 | from django.utils.safestring import mark_safe
|
---|
20 | from django.utils import six
|
---|
21 | +from django.utils.deprecation import RenameMethodsBase
|
---|
22 | from django.utils.text import capfirst, get_text_list
|
---|
23 | from django.utils.translation import ugettext as _
|
---|
24 | from django.utils.translation import ungettext
|
---|
25 | @@ -63,7 +64,13 @@ FORMFIELD_FOR_DBFIELD_DEFAULTS = {
|
---|
26 | csrf_protect_m = method_decorator(csrf_protect)
|
---|
27 |
|
---|
28 |
|
---|
29 | -class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
---|
30 | +class RenameBaseModelAdminMethods(forms.MediaDefiningClass, RenameMethodsBase):
|
---|
31 | + renamed_methods = (
|
---|
32 | + ('queryset', 'get_queryset'),
|
---|
33 | + )
|
---|
34 | +
|
---|
35 | +
|
---|
36 | +class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)):
|
---|
37 | """Functionality common to both ModelAdmin and InlineAdmin."""
|
---|
38 |
|
---|
39 | raw_id_fields = ()
|
---|
40 | @@ -217,12 +224,12 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
---|
41 | """
|
---|
42 | return self.prepopulated_fields
|
---|
43 |
|
---|
44 | - def queryset(self, request):
|
---|
45 | + def get_queryset(self, request):
|
---|
46 | """
|
---|
47 | Returns a QuerySet of all model instances that can be edited by the
|
---|
48 | admin site. This is used by changelist_view.
|
---|
49 | """
|
---|
50 | - qs = self.model._default_manager.get_query_set()
|
---|
51 | + qs = self.model._default_manager.get_queryset()
|
---|
52 | # TODO: this should be handled by some parameter to the ChangeList.
|
---|
53 | ordering = self.get_ordering(request)
|
---|
54 | if ordering:
|
---|
55 | @@ -474,7 +481,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
56 | returned if no match is found (or the object_id failed validation
|
---|
57 | against the primary key field).
|
---|
58 | """
|
---|
59 | - queryset = self.queryset(request)
|
---|
60 | + queryset = self.get_queryset(request)
|
---|
61 | model = queryset.model
|
---|
62 | try:
|
---|
63 | object_id = model._meta.pk.to_python(object_id)
|
---|
64 | @@ -986,7 +993,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
65 | formset = FormSet(data=request.POST, files=request.FILES,
|
---|
66 | instance=new_object,
|
---|
67 | save_as_new="_saveasnew" in request.POST,
|
---|
68 | - prefix=prefix, queryset=inline.queryset(request))
|
---|
69 | + prefix=prefix, queryset=inline.get_queryset(request))
|
---|
70 | formsets.append(formset)
|
---|
71 | if all_valid(formsets) and form_validated:
|
---|
72 | self.save_model(request, new_object, form, False)
|
---|
73 | @@ -1012,7 +1019,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
74 | if prefixes[prefix] != 1 or not prefix:
|
---|
75 | prefix = "%s-%s" % (prefix, prefixes[prefix])
|
---|
76 | formset = FormSet(instance=self.model(), prefix=prefix,
|
---|
77 | - queryset=inline.queryset(request))
|
---|
78 | + queryset=inline.get_queryset(request))
|
---|
79 | formsets.append(formset)
|
---|
80 |
|
---|
81 | adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)),
|
---|
82 | @@ -1082,7 +1089,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
83 | prefix = "%s-%s" % (prefix, prefixes[prefix])
|
---|
84 | formset = FormSet(request.POST, request.FILES,
|
---|
85 | instance=new_object, prefix=prefix,
|
---|
86 | - queryset=inline.queryset(request))
|
---|
87 | + queryset=inline.get_queryset(request))
|
---|
88 |
|
---|
89 | formsets.append(formset)
|
---|
90 |
|
---|
91 | @@ -1102,7 +1109,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
92 | if prefixes[prefix] != 1 or not prefix:
|
---|
93 | prefix = "%s-%s" % (prefix, prefixes[prefix])
|
---|
94 | formset = FormSet(instance=obj, prefix=prefix,
|
---|
95 | - queryset=inline.queryset(request))
|
---|
96 | + queryset=inline.get_queryset(request))
|
---|
97 | formsets.append(formset)
|
---|
98 |
|
---|
99 | adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj),
|
---|
100 | @@ -1187,7 +1194,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
101 | if (actions and request.method == 'POST' and
|
---|
102 | 'index' in request.POST and '_save' not in request.POST):
|
---|
103 | if selected:
|
---|
104 | - response = self.response_action(request, queryset=cl.get_query_set(request))
|
---|
105 | + response = self.response_action(request, queryset=cl.get_queryset(request))
|
---|
106 | if response:
|
---|
107 | return response
|
---|
108 | else:
|
---|
109 | @@ -1203,7 +1210,7 @@ class ModelAdmin(BaseModelAdmin):
|
---|
110 | helpers.ACTION_CHECKBOX_NAME in request.POST and
|
---|
111 | 'index' not in request.POST and '_save' not in request.POST):
|
---|
112 | if selected:
|
---|
113 | - response = self.response_action(request, queryset=cl.get_query_set(request))
|
---|
114 | + response = self.response_action(request, queryset=cl.get_queryset(request))
|
---|
115 | if response:
|
---|
116 | return response
|
---|
117 | else:
|
---|
118 | @@ -1462,8 +1469,8 @@ class InlineModelAdmin(BaseModelAdmin):
|
---|
119 | fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj))
|
---|
120 | return [(None, {'fields': fields})]
|
---|
121 |
|
---|
122 | - def queryset(self, request):
|
---|
123 | - queryset = super(InlineModelAdmin, self).queryset(request)
|
---|
124 | + def get_queryset(self, request):
|
---|
125 | + queryset = super(InlineModelAdmin, self).get_queryset(request)
|
---|
126 | if not self.has_change_permission(request):
|
---|
127 | queryset = queryset.none()
|
---|
128 | return queryset
|
---|
129 | diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
|
---|
130 | index 8bda323..3757436 100644
|
---|
131 | --- a/django/contrib/admin/views/main.py
|
---|
132 | +++ b/django/contrib/admin/views/main.py
|
---|
133 | @@ -6,7 +6,9 @@ from django.core.paginator import InvalidPage
|
---|
134 | from django.core.urlresolvers import reverse
|
---|
135 | from django.db import models
|
---|
136 | from django.db.models.fields import FieldDoesNotExist
|
---|
137 | +from django.utils import six
|
---|
138 | from django.utils.datastructures import SortedDict
|
---|
139 | +from django.utils.deprecation import RenameMethodsBase
|
---|
140 | from django.utils.encoding import force_str, force_text
|
---|
141 | from django.utils.translation import ugettext, ugettext_lazy
|
---|
142 | from django.utils.http import urlencode
|
---|
143 | @@ -33,14 +35,20 @@ IGNORED_PARAMS = (
|
---|
144 | EMPTY_CHANGELIST_VALUE = ugettext_lazy('(None)')
|
---|
145 |
|
---|
146 |
|
---|
147 | -class ChangeList(object):
|
---|
148 | +class RenameChangeListMethods(RenameMethodsBase):
|
---|
149 | + renamed_methods = (
|
---|
150 | + ('get_query_set', 'get_queryset'),
|
---|
151 | + )
|
---|
152 | +
|
---|
153 | +
|
---|
154 | +class ChangeList(six.with_metaclass(RenameChangeListMethods)):
|
---|
155 | def __init__(self, request, model, list_display, list_display_links,
|
---|
156 | list_filter, date_hierarchy, search_fields, list_select_related,
|
---|
157 | list_per_page, list_max_show_all, list_editable, model_admin):
|
---|
158 | self.model = model
|
---|
159 | self.opts = model._meta
|
---|
160 | self.lookup_opts = self.opts
|
---|
161 | - self.root_query_set = model_admin.queryset(request)
|
---|
162 | + self.root_query_set = model_admin.get_queryset(request)
|
---|
163 | self.list_display = list_display
|
---|
164 | self.list_display_links = list_display_links
|
---|
165 | self.list_filter = list_filter
|
---|
166 | @@ -70,7 +78,7 @@ class ChangeList(object):
|
---|
167 | else:
|
---|
168 | self.list_editable = list_editable
|
---|
169 | self.query = request.GET.get(SEARCH_VAR, '')
|
---|
170 | - self.query_set = self.get_query_set(request)
|
---|
171 | + self.query_set = self.get_queryset(request)
|
---|
172 | self.get_results(request)
|
---|
173 | if self.is_popup:
|
---|
174 | title = ugettext('Select %s')
|
---|
175 | @@ -304,7 +312,7 @@ class ChangeList(object):
|
---|
176 | ordering_fields[idx] = 'desc' if pfx == '-' else 'asc'
|
---|
177 | return ordering_fields
|
---|
178 |
|
---|
179 | - def get_query_set(self, request):
|
---|
180 | + def get_queryset(self, request):
|
---|
181 | # First, we collect all the declared list filters.
|
---|
182 | (self.filter_specs, self.has_filters, remaining_lookup_params,
|
---|
183 | use_distinct) = self.get_filters(request)
|
---|
184 | diff --git a/django/contrib/auth/admin.py b/django/contrib/auth/admin.py
|
---|
185 | index 7b81667..0abc361 100644
|
---|
186 | --- a/django/contrib/auth/admin.py
|
---|
187 | +++ b/django/contrib/auth/admin.py
|
---|
188 | @@ -118,7 +118,7 @@ class UserAdmin(admin.ModelAdmin):
|
---|
189 | def user_change_password(self, request, id, form_url=''):
|
---|
190 | if not self.has_change_permission(request):
|
---|
191 | raise PermissionDenied
|
---|
192 | - user = get_object_or_404(self.queryset(request), pk=id)
|
---|
193 | + user = get_object_or_404(self.get_queryset(request), pk=id)
|
---|
194 | if request.method == 'POST':
|
---|
195 | form = self.change_password_form(user, request.POST)
|
---|
196 | if form.is_valid():
|
---|
197 | diff --git a/django/contrib/comments/managers.py b/django/contrib/comments/managers.py
|
---|
198 | index bc0fc5f..6562004 100644
|
---|
199 | --- a/django/contrib/comments/managers.py
|
---|
200 | +++ b/django/contrib/comments/managers.py
|
---|
201 | @@ -8,7 +8,7 @@ class CommentManager(models.Manager):
|
---|
202 | """
|
---|
203 | QuerySet for all comments currently in the moderation queue.
|
---|
204 | """
|
---|
205 | - return self.get_query_set().filter(is_public=False, is_removed=False)
|
---|
206 | + return self.get_queryset().filter(is_public=False, is_removed=False)
|
---|
207 |
|
---|
208 | def for_model(self, model):
|
---|
209 | """
|
---|
210 | @@ -16,7 +16,7 @@ class CommentManager(models.Manager):
|
---|
211 | a class).
|
---|
212 | """
|
---|
213 | ct = ContentType.objects.get_for_model(model)
|
---|
214 | - qs = self.get_query_set().filter(content_type=ct)
|
---|
215 | + qs = self.get_queryset().filter(content_type=ct)
|
---|
216 | if isinstance(model, models.Model):
|
---|
217 | qs = qs.filter(object_pk=force_text(model._get_pk_val()))
|
---|
218 | return qs
|
---|
219 | diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py
|
---|
220 | index 4d4eb23..8d21b7b 100644
|
---|
221 | --- a/django/contrib/comments/templatetags/comments.py
|
---|
222 | +++ b/django/contrib/comments/templatetags/comments.py
|
---|
223 | @@ -3,11 +3,20 @@ from django.template.loader import render_to_string
|
---|
224 | from django.conf import settings
|
---|
225 | from django.contrib.contenttypes.models import ContentType
|
---|
226 | from django.contrib import comments
|
---|
227 | +from django.utils import six
|
---|
228 | +from django.utils.deprecation import RenameMethodsBase
|
---|
229 | from django.utils.encoding import smart_text
|
---|
230 |
|
---|
231 | register = template.Library()
|
---|
232 |
|
---|
233 | -class BaseCommentNode(template.Node):
|
---|
234 | +
|
---|
235 | +class RenameBaseCommentNodeMethods(RenameMethodsBase):
|
---|
236 | + renamed_methods = (
|
---|
237 | + ('get_query_set', 'get_queryset'),
|
---|
238 | + )
|
---|
239 | +
|
---|
240 | +
|
---|
241 | +class BaseCommentNode(six.with_metaclass(RenameBaseCommentNodeMethods, template.Node)):
|
---|
242 | """
|
---|
243 | Base helper class (abstract) for handling the get_comment_* template tags.
|
---|
244 | Looks a bit strange, but the subclasses below should make this a bit more
|
---|
245 | @@ -64,11 +73,11 @@ class BaseCommentNode(template.Node):
|
---|
246 | self.comment = comment
|
---|
247 |
|
---|
248 | def render(self, context):
|
---|
249 | - qs = self.get_query_set(context)
|
---|
250 | + qs = self.get_queryset(context)
|
---|
251 | context[self.as_varname] = self.get_context_value_from_queryset(context, qs)
|
---|
252 | return ''
|
---|
253 |
|
---|
254 | - def get_query_set(self, context):
|
---|
255 | + def get_queryset(self, context):
|
---|
256 | ctype, object_pk = self.get_target_ctype_pk(context)
|
---|
257 | if not object_pk:
|
---|
258 | return self.comment_model.objects.none()
|
---|
259 | @@ -205,7 +214,7 @@ class RenderCommentListNode(CommentListNode):
|
---|
260 | "comments/%s/list.html" % ctype.app_label,
|
---|
261 | "comments/list.html"
|
---|
262 | ]
|
---|
263 | - qs = self.get_query_set(context)
|
---|
264 | + qs = self.get_queryset(context)
|
---|
265 | context.push()
|
---|
266 | liststr = render_to_string(template_search_list, {
|
---|
267 | "comment_list" : self.get_context_value_from_queryset(context, qs)
|
---|
268 | diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
|
---|
269 | index 20ff704..d540cef 100644
|
---|
270 | --- a/django/contrib/contenttypes/generic.py
|
---|
271 | +++ b/django/contrib/contenttypes/generic.py
|
---|
272 | @@ -16,10 +16,18 @@ from django.forms import ModelForm
|
---|
273 | from django.forms.models import BaseModelFormSet, modelformset_factory, save_instance
|
---|
274 | from django.contrib.admin.options import InlineModelAdmin, flatten_fieldsets
|
---|
275 | from django.contrib.contenttypes.models import ContentType
|
---|
276 | +from django.utils import six
|
---|
277 | +from django.utils.deprecation import RenameMethodsBase
|
---|
278 | from django.utils.encoding import smart_text
|
---|
279 |
|
---|
280 |
|
---|
281 | -class GenericForeignKey(object):
|
---|
282 | +class RenameGenericForeignKeyMethods(RenameMethodsBase):
|
---|
283 | + renamed_methods = (
|
---|
284 | + ('get_prefetch_query_set', 'get_prefetch_queryset'),
|
---|
285 | + )
|
---|
286 | +
|
---|
287 | +
|
---|
288 | +class GenericForeignKey(six.with_metaclass(RenameGenericForeignKeyMethods)):
|
---|
289 | """
|
---|
290 | Provides a generic relation to any object through content-type/object-id
|
---|
291 | fields.
|
---|
292 | @@ -60,7 +68,7 @@ class GenericForeignKey(object):
|
---|
293 | # This should never happen. I love comments like this, don't you?
|
---|
294 | raise Exception("Impossible arguments to GFK.get_content_type!")
|
---|
295 |
|
---|
296 | - def get_prefetch_query_set(self, instances):
|
---|
297 | + def get_prefetch_queryset(self, instances):
|
---|
298 | # For efficiency, group the instances by content type and then do one
|
---|
299 | # query per model
|
---|
300 | fk_dict = defaultdict(set)
|
---|
301 | @@ -316,21 +324,21 @@ def create_generic_related_manager(superclass):
|
---|
302 | '%s__exact' % object_id_field_name: instance._get_pk_val(),
|
---|
303 | }
|
---|
304 |
|
---|
305 | - def get_query_set(self):
|
---|
306 | + def get_queryset(self):
|
---|
307 | try:
|
---|
308 | return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
|
---|
309 | except (AttributeError, KeyError):
|
---|
310 | db = self._db or router.db_for_read(self.model, instance=self.instance)
|
---|
311 | - return super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**self.core_filters)
|
---|
312 | + return super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**self.core_filters)
|
---|
313 |
|
---|
314 | - def get_prefetch_query_set(self, instances):
|
---|
315 | + def get_prefetch_queryset(self, instances):
|
---|
316 | db = self._db or router.db_for_read(self.model, instance=instances[0])
|
---|
317 | query = {
|
---|
318 | '%s__pk' % self.content_type_field_name: self.content_type.id,
|
---|
319 | '%s__in' % self.object_id_field_name:
|
---|
320 | set(obj._get_pk_val() for obj in instances)
|
---|
321 | }
|
---|
322 | - qs = super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**query)
|
---|
323 | + qs = super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**query)
|
---|
324 | # We (possibly) need to convert object IDs to the type of the
|
---|
325 | # instances' PK in order to match up instances:
|
---|
326 | object_id_converter = instances[0]._meta.pk.to_python
|
---|
327 | diff --git a/django/contrib/gis/db/models/manager.py b/django/contrib/gis/db/models/manager.py
|
---|
328 | index 61fb821..aa57e3a 100644
|
---|
329 | --- a/django/contrib/gis/db/models/manager.py
|
---|
330 | +++ b/django/contrib/gis/db/models/manager.py
|
---|
331 | @@ -9,95 +9,95 @@ class GeoManager(Manager):
|
---|
332 | # properly.
|
---|
333 | use_for_related_fields = True
|
---|
334 |
|
---|
335 | - def get_query_set(self):
|
---|
336 | + def get_queryset(self):
|
---|
337 | return GeoQuerySet(self.model, using=self._db)
|
---|
338 |
|
---|
339 | def area(self, *args, **kwargs):
|
---|
340 | - return self.get_query_set().area(*args, **kwargs)
|
---|
341 | + return self.get_queryset().area(*args, **kwargs)
|
---|
342 |
|
---|
343 | def centroid(self, *args, **kwargs):
|
---|
344 | - return self.get_query_set().centroid(*args, **kwargs)
|
---|
345 | + return self.get_queryset().centroid(*args, **kwargs)
|
---|
346 |
|
---|
347 | def collect(self, *args, **kwargs):
|
---|
348 | - return self.get_query_set().collect(*args, **kwargs)
|
---|
349 | + return self.get_queryset().collect(*args, **kwargs)
|
---|
350 |
|
---|
351 | def difference(self, *args, **kwargs):
|
---|
352 | - return self.get_query_set().difference(*args, **kwargs)
|
---|
353 | + return self.get_queryset().difference(*args, **kwargs)
|
---|
354 |
|
---|
355 | def distance(self, *args, **kwargs):
|
---|
356 | - return self.get_query_set().distance(*args, **kwargs)
|
---|
357 | + return self.get_queryset().distance(*args, **kwargs)
|
---|
358 |
|
---|
359 | def envelope(self, *args, **kwargs):
|
---|
360 | - return self.get_query_set().envelope(*args, **kwargs)
|
---|
361 | + return self.get_queryset().envelope(*args, **kwargs)
|
---|
362 |
|
---|
363 | def extent(self, *args, **kwargs):
|
---|
364 | - return self.get_query_set().extent(*args, **kwargs)
|
---|
365 | + return self.get_queryset().extent(*args, **kwargs)
|
---|
366 |
|
---|
367 | def extent3d(self, *args, **kwargs):
|
---|
368 | - return self.get_query_set().extent3d(*args, **kwargs)
|
---|
369 | + return self.get_queryset().extent3d(*args, **kwargs)
|
---|
370 |
|
---|
371 | def force_rhr(self, *args, **kwargs):
|
---|
372 | - return self.get_query_set().force_rhr(*args, **kwargs)
|
---|
373 | + return self.get_queryset().force_rhr(*args, **kwargs)
|
---|
374 |
|
---|
375 | def geohash(self, *args, **kwargs):
|
---|
376 | - return self.get_query_set().geohash(*args, **kwargs)
|
---|
377 | + return self.get_queryset().geohash(*args, **kwargs)
|
---|
378 |
|
---|
379 | def geojson(self, *args, **kwargs):
|
---|
380 | - return self.get_query_set().geojson(*args, **kwargs)
|
---|
381 | + return self.get_queryset().geojson(*args, **kwargs)
|
---|
382 |
|
---|
383 | def gml(self, *args, **kwargs):
|
---|
384 | - return self.get_query_set().gml(*args, **kwargs)
|
---|
385 | + return self.get_queryset().gml(*args, **kwargs)
|
---|
386 |
|
---|
387 | def intersection(self, *args, **kwargs):
|
---|
388 | - return self.get_query_set().intersection(*args, **kwargs)
|
---|
389 | + return self.get_queryset().intersection(*args, **kwargs)
|
---|
390 |
|
---|
391 | def kml(self, *args, **kwargs):
|
---|
392 | - return self.get_query_set().kml(*args, **kwargs)
|
---|
393 | + return self.get_queryset().kml(*args, **kwargs)
|
---|
394 |
|
---|
395 | def length(self, *args, **kwargs):
|
---|
396 | - return self.get_query_set().length(*args, **kwargs)
|
---|
397 | + return self.get_queryset().length(*args, **kwargs)
|
---|
398 |
|
---|
399 | def make_line(self, *args, **kwargs):
|
---|
400 | - return self.get_query_set().make_line(*args, **kwargs)
|
---|
401 | + return self.get_queryset().make_line(*args, **kwargs)
|
---|
402 |
|
---|
403 | def mem_size(self, *args, **kwargs):
|
---|
404 | - return self.get_query_set().mem_size(*args, **kwargs)
|
---|
405 | + return self.get_queryset().mem_size(*args, **kwargs)
|
---|
406 |
|
---|
407 | def num_geom(self, *args, **kwargs):
|
---|
408 | - return self.get_query_set().num_geom(*args, **kwargs)
|
---|
409 | + return self.get_queryset().num_geom(*args, **kwargs)
|
---|
410 |
|
---|
411 | def num_points(self, *args, **kwargs):
|
---|
412 | - return self.get_query_set().num_points(*args, **kwargs)
|
---|
413 | + return self.get_queryset().num_points(*args, **kwargs)
|
---|
414 |
|
---|
415 | def perimeter(self, *args, **kwargs):
|
---|
416 | - return self.get_query_set().perimeter(*args, **kwargs)
|
---|
417 | + return self.get_queryset().perimeter(*args, **kwargs)
|
---|
418 |
|
---|
419 | def point_on_surface(self, *args, **kwargs):
|
---|
420 | - return self.get_query_set().point_on_surface(*args, **kwargs)
|
---|
421 | + return self.get_queryset().point_on_surface(*args, **kwargs)
|
---|
422 |
|
---|
423 | def reverse_geom(self, *args, **kwargs):
|
---|
424 | - return self.get_query_set().reverse_geom(*args, **kwargs)
|
---|
425 | + return self.get_queryset().reverse_geom(*args, **kwargs)
|
---|
426 |
|
---|
427 | def scale(self, *args, **kwargs):
|
---|
428 | - return self.get_query_set().scale(*args, **kwargs)
|
---|
429 | + return self.get_queryset().scale(*args, **kwargs)
|
---|
430 |
|
---|
431 | def snap_to_grid(self, *args, **kwargs):
|
---|
432 | - return self.get_query_set().snap_to_grid(*args, **kwargs)
|
---|
433 | + return self.get_queryset().snap_to_grid(*args, **kwargs)
|
---|
434 |
|
---|
435 | def svg(self, *args, **kwargs):
|
---|
436 | - return self.get_query_set().svg(*args, **kwargs)
|
---|
437 | + return self.get_queryset().svg(*args, **kwargs)
|
---|
438 |
|
---|
439 | def sym_difference(self, *args, **kwargs):
|
---|
440 | - return self.get_query_set().sym_difference(*args, **kwargs)
|
---|
441 | + return self.get_queryset().sym_difference(*args, **kwargs)
|
---|
442 |
|
---|
443 | def transform(self, *args, **kwargs):
|
---|
444 | - return self.get_query_set().transform(*args, **kwargs)
|
---|
445 | + return self.get_queryset().transform(*args, **kwargs)
|
---|
446 |
|
---|
447 | def translate(self, *args, **kwargs):
|
---|
448 | - return self.get_query_set().translate(*args, **kwargs)
|
---|
449 | + return self.get_queryset().translate(*args, **kwargs)
|
---|
450 |
|
---|
451 | def union(self, *args, **kwargs):
|
---|
452 | - return self.get_query_set().union(*args, **kwargs)
|
---|
453 | + return self.get_queryset().union(*args, **kwargs)
|
---|
454 |
|
---|
455 | def unionagg(self, *args, **kwargs):
|
---|
456 | - return self.get_query_set().unionagg(*args, **kwargs)
|
---|
457 | + return self.get_queryset().unionagg(*args, **kwargs)
|
---|
458 | diff --git a/django/contrib/sites/managers.py b/django/contrib/sites/managers.py
|
---|
459 | index 3df485a..becb35b 100644
|
---|
460 | --- a/django/contrib/sites/managers.py
|
---|
461 | +++ b/django/contrib/sites/managers.py
|
---|
462 | @@ -35,7 +35,7 @@ class CurrentSiteManager(models.Manager):
|
---|
463 | (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
|
---|
464 | self.__is_validated = True
|
---|
465 |
|
---|
466 | - def get_query_set(self):
|
---|
467 | + def get_queryset(self):
|
---|
468 | if not self.__is_validated:
|
---|
469 | self._validate_field_name()
|
---|
470 | - return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
|
---|
471 | + return super(CurrentSiteManager, self).get_queryset().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
|
---|
472 | diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
|
---|
473 | index 01b8a55..843b78e 100644
|
---|
474 | --- a/django/db/models/fields/related.py
|
---|
475 | +++ b/django/db/models/fields/related.py
|
---|
476 | @@ -11,6 +11,7 @@ from django.db.models.query_utils import QueryWrapper
|
---|
477 | from django.db.models.deletion import CASCADE
|
---|
478 | from django.utils.encoding import smart_text
|
---|
479 | from django.utils import six
|
---|
480 | +from django.utils.deprecation import RenameMethodsBase
|
---|
481 | from django.utils.translation import ugettext_lazy as _, string_concat
|
---|
482 | from django.utils.functional import curry, cached_property
|
---|
483 | from django.core import exceptions
|
---|
484 | @@ -225,7 +226,14 @@ class RelatedField(object):
|
---|
485 | return self.rel.related_name or self.opts.model_name
|
---|
486 |
|
---|
487 |
|
---|
488 | -class SingleRelatedObjectDescriptor(object):
|
---|
489 | +class RenameRelatedObjectDescriptorMethods(RenameMethodsBase):
|
---|
490 | + renamed_methods = (
|
---|
491 | + ('get_query_set', 'get_queryset'),
|
---|
492 | + ('get_prefetch_query_set', 'get_prefetch_queryset'),
|
---|
493 | + )
|
---|
494 | +
|
---|
495 | +
|
---|
496 | +class SingleRelatedObjectDescriptor(six.with_metaclass(RenameRelatedObjectDescriptorMethods)):
|
---|
497 | # This class provides the functionality that makes the related-object
|
---|
498 | # managers available as attributes on a model class, for fields that have
|
---|
499 | # a single "remote" value, on the class pointed to by a related field.
|
---|
500 | @@ -238,16 +246,16 @@ class SingleRelatedObjectDescriptor(object):
|
---|
501 | def is_cached(self, instance):
|
---|
502 | return hasattr(instance, self.cache_name)
|
---|
503 |
|
---|
504 | - def get_query_set(self, **db_hints):
|
---|
505 | + def get_queryset(self, **db_hints):
|
---|
506 | db = router.db_for_read(self.related.model, **db_hints)
|
---|
507 | return self.related.model._base_manager.using(db)
|
---|
508 |
|
---|
509 | - def get_prefetch_query_set(self, instances):
|
---|
510 | + def get_prefetch_queryset(self, instances):
|
---|
511 | rel_obj_attr = attrgetter(self.related.field.attname)
|
---|
512 | instance_attr = lambda obj: obj._get_pk_val()
|
---|
513 | instances_dict = dict((instance_attr(inst), inst) for inst in instances)
|
---|
514 | params = {'%s__pk__in' % self.related.field.name: list(instances_dict)}
|
---|
515 | - qs = self.get_query_set(instance=instances[0]).filter(**params)
|
---|
516 | + qs = self.get_queryset(instance=instances[0]).filter(**params)
|
---|
517 | # Since we're going to assign directly in the cache,
|
---|
518 | # we must manage the reverse relation cache manually.
|
---|
519 | rel_obj_cache_name = self.related.field.get_cache_name()
|
---|
520 | @@ -268,7 +276,7 @@ class SingleRelatedObjectDescriptor(object):
|
---|
521 | else:
|
---|
522 | params = {'%s__pk' % self.related.field.name: related_pk}
|
---|
523 | try:
|
---|
524 | - rel_obj = self.get_query_set(instance=instance).get(**params)
|
---|
525 | + rel_obj = self.get_queryset(instance=instance).get(**params)
|
---|
526 | except self.related.model.DoesNotExist:
|
---|
527 | rel_obj = None
|
---|
528 | else:
|
---|
529 | @@ -321,7 +329,7 @@ class SingleRelatedObjectDescriptor(object):
|
---|
530 | setattr(value, self.related.field.get_cache_name(), instance)
|
---|
531 |
|
---|
532 |
|
---|
533 | -class ReverseSingleRelatedObjectDescriptor(object):
|
---|
534 | +class ReverseSingleRelatedObjectDescriptor(six.with_metaclass(RenameRelatedObjectDescriptorMethods)):
|
---|
535 | # This class provides the functionality that makes the related-object
|
---|
536 | # managers available as attributes on a model class, for fields that have
|
---|
537 | # a single "remote" value, on the class that defines the related field.
|
---|
538 | @@ -334,7 +342,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
---|
539 | def is_cached(self, instance):
|
---|
540 | return hasattr(instance, self.cache_name)
|
---|
541 |
|
---|
542 | - def get_query_set(self, **db_hints):
|
---|
543 | + def get_queryset(self, **db_hints):
|
---|
544 | db = router.db_for_read(self.field.rel.to, **db_hints)
|
---|
545 | rel_mgr = self.field.rel.to._default_manager
|
---|
546 | # If the related manager indicates that it should be used for
|
---|
547 | @@ -344,7 +352,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
---|
548 | else:
|
---|
549 | return QuerySet(self.field.rel.to).using(db)
|
---|
550 |
|
---|
551 | - def get_prefetch_query_set(self, instances):
|
---|
552 | + def get_prefetch_queryset(self, instances):
|
---|
553 | other_field = self.field.rel.get_related_field()
|
---|
554 | rel_obj_attr = attrgetter(other_field.attname)
|
---|
555 | instance_attr = attrgetter(self.field.attname)
|
---|
556 | @@ -353,7 +361,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
---|
557 | params = {'%s__pk__in' % self.field.rel.field_name: list(instances_dict)}
|
---|
558 | else:
|
---|
559 | params = {'%s__in' % self.field.rel.field_name: list(instances_dict)}
|
---|
560 | - qs = self.get_query_set(instance=instances[0]).filter(**params)
|
---|
561 | + qs = self.get_queryset(instance=instances[0]).filter(**params)
|
---|
562 | # Since we're going to assign directly in the cache,
|
---|
563 | # we must manage the reverse relation cache manually.
|
---|
564 | if not self.field.rel.multiple:
|
---|
565 | @@ -378,7 +386,7 @@ class ReverseSingleRelatedObjectDescriptor(object):
|
---|
566 | params = {'%s__%s' % (self.field.rel.field_name, other_field.rel.field_name): val}
|
---|
567 | else:
|
---|
568 | params = {'%s__exact' % self.field.rel.field_name: val}
|
---|
569 | - qs = self.get_query_set(instance=instance)
|
---|
570 | + qs = self.get_queryset(instance=instance)
|
---|
571 | # Assuming the database enforces foreign keys, this won't fail.
|
---|
572 | rel_obj = qs.get(**params)
|
---|
573 | if not self.field.rel.multiple:
|
---|
574 | @@ -490,26 +498,26 @@ class ForeignRelatedObjectsDescriptor(object):
|
---|
575 | }
|
---|
576 | self.model = rel_model
|
---|
577 |
|
---|
578 | - def get_query_set(self):
|
---|
579 | + def get_queryset(self):
|
---|
580 | try:
|
---|
581 | return self.instance._prefetched_objects_cache[rel_field.related_query_name()]
|
---|
582 | except (AttributeError, KeyError):
|
---|
583 | db = self._db or router.db_for_read(self.model, instance=self.instance)
|
---|
584 | - qs = super(RelatedManager, self).get_query_set().using(db).filter(**self.core_filters)
|
---|
585 | + qs = super(RelatedManager, self).get_queryset().using(db).filter(**self.core_filters)
|
---|
586 | val = getattr(self.instance, attname)
|
---|
587 | if val is None or val == '' and connections[db].features.interprets_empty_strings_as_nulls:
|
---|
588 | return qs.none()
|
---|
589 | qs._known_related_objects = {rel_field: {self.instance.pk: self.instance}}
|
---|
590 | return qs
|
---|
591 |
|
---|
592 | - def get_prefetch_query_set(self, instances):
|
---|
593 | + def get_prefetch_queryset(self, instances):
|
---|
594 | rel_obj_attr = attrgetter(rel_field.attname)
|
---|
595 | instance_attr = attrgetter(attname)
|
---|
596 | instances_dict = dict((instance_attr(inst), inst) for inst in instances)
|
---|
597 | db = self._db or router.db_for_read(self.model, instance=instances[0])
|
---|
598 | query = {'%s__%s__in' % (rel_field.name, attname): list(instances_dict)}
|
---|
599 | - qs = super(RelatedManager, self).get_query_set().using(db).filter(**query)
|
---|
600 | - # Since we just bypassed this class' get_query_set(), we must manage
|
---|
601 | + qs = super(RelatedManager, self).get_queryset().using(db).filter(**query)
|
---|
602 | + # Since we just bypassed this class' get_queryset(), we must manage
|
---|
603 | # the reverse relation manually.
|
---|
604 | for rel_obj in qs:
|
---|
605 | instance = instances_dict[rel_obj_attr(rel_obj)]
|
---|
606 | @@ -603,20 +611,20 @@ def create_many_related_manager(superclass, rel):
|
---|
607 | else:
|
---|
608 | return obj.pk
|
---|
609 |
|
---|
610 | - def get_query_set(self):
|
---|
611 | + def get_queryset(self):
|
---|
612 | try:
|
---|
613 | return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
|
---|
614 | except (AttributeError, KeyError):
|
---|
615 | db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance)
|
---|
616 | - return super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**self.core_filters)
|
---|
617 | + return super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**self.core_filters)
|
---|
618 |
|
---|
619 | - def get_prefetch_query_set(self, instances):
|
---|
620 | + def get_prefetch_queryset(self, instances):
|
---|
621 | instance = instances[0]
|
---|
622 | from django.db import connections
|
---|
623 | db = self._db or router.db_for_read(instance.__class__, instance=instance)
|
---|
624 | query = {'%s__pk__in' % self.query_field_name:
|
---|
625 | set(obj._get_pk_val() for obj in instances)}
|
---|
626 | - qs = super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**query)
|
---|
627 | + qs = super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**query)
|
---|
628 |
|
---|
629 | # M2M: need to annotate the query in order to get the primary model
|
---|
630 | # that the secondary model was actually related to. We know that
|
---|
631 | diff --git a/django/db/models/manager.py b/django/db/models/manager.py
|
---|
632 | index b1f2e10..687c5ab 100644
|
---|
633 | --- a/django/db/models/manager.py
|
---|
634 | +++ b/django/db/models/manager.py
|
---|
635 | @@ -3,7 +3,8 @@ from django.db import router
|
---|
636 | from django.db.models.query import QuerySet, insert_query, RawQuerySet
|
---|
637 | from django.db.models import signals
|
---|
638 | from django.db.models.fields import FieldDoesNotExist
|
---|
639 | -
|
---|
640 | +from django.utils import six
|
---|
641 | +from django.utils.deprecation import RenameMethodsBase
|
---|
642 |
|
---|
643 | def ensure_default_manager(sender, **kwargs):
|
---|
644 | """
|
---|
645 | @@ -47,7 +48,15 @@ def ensure_default_manager(sender, **kwargs):
|
---|
646 | signals.class_prepared.connect(ensure_default_manager)
|
---|
647 |
|
---|
648 |
|
---|
649 | -class Manager(object):
|
---|
650 | +class RenameManagerMethods(RenameMethodsBase):
|
---|
651 | + renamed_methods = (
|
---|
652 | + ('get_query_set', 'get_queryset'),
|
---|
653 | + ('get_prefetch_query_set', 'get_prefetch_queryset'),
|
---|
654 | + )
|
---|
655 | +
|
---|
656 | +
|
---|
657 | +class Manager(six.with_metaclass(RenameManagerMethods)):
|
---|
658 | +# class Manager(object):
|
---|
659 | # Tracks each time a Manager instance is created. Used to retain order.
|
---|
660 | creation_counter = 0
|
---|
661 |
|
---|
662 | @@ -112,113 +121,113 @@ class Manager(object):
|
---|
663 | # PROXIES TO QUERYSET #
|
---|
664 | #######################
|
---|
665 |
|
---|
666 | - def get_query_set(self):
|
---|
667 | + def get_queryset(self):
|
---|
668 | """Returns a new QuerySet object. Subclasses can override this method
|
---|
669 | to easily customize the behavior of the Manager.
|
---|
670 | """
|
---|
671 | return QuerySet(self.model, using=self._db)
|
---|
672 |
|
---|
673 | def none(self):
|
---|
674 | - return self.get_query_set().none()
|
---|
675 | + return self.get_queryset().none()
|
---|
676 |
|
---|
677 | def all(self):
|
---|
678 | - return self.get_query_set()
|
---|
679 | + return self.get_queryset()
|
---|
680 |
|
---|
681 | def count(self):
|
---|
682 | - return self.get_query_set().count()
|
---|
683 | + return self.get_queryset().count()
|
---|
684 |
|
---|
685 | def dates(self, *args, **kwargs):
|
---|
686 | - return self.get_query_set().dates(*args, **kwargs)
|
---|
687 | + return self.get_queryset().dates(*args, **kwargs)
|
---|
688 |
|
---|
689 | def datetimes(self, *args, **kwargs):
|
---|
690 | - return self.get_query_set().datetimes(*args, **kwargs)
|
---|
691 | + return self.get_queryset().datetimes(*args, **kwargs)
|
---|
692 |
|
---|
693 | def distinct(self, *args, **kwargs):
|
---|
694 | - return self.get_query_set().distinct(*args, **kwargs)
|
---|
695 | + return self.get_queryset().distinct(*args, **kwargs)
|
---|
696 |
|
---|
697 | def extra(self, *args, **kwargs):
|
---|
698 | - return self.get_query_set().extra(*args, **kwargs)
|
---|
699 | + return self.get_queryset().extra(*args, **kwargs)
|
---|
700 |
|
---|
701 | def get(self, *args, **kwargs):
|
---|
702 | - return self.get_query_set().get(*args, **kwargs)
|
---|
703 | + return self.get_queryset().get(*args, **kwargs)
|
---|
704 |
|
---|
705 | def get_or_create(self, **kwargs):
|
---|
706 | - return self.get_query_set().get_or_create(**kwargs)
|
---|
707 | + return self.get_queryset().get_or_create(**kwargs)
|
---|
708 |
|
---|
709 | def create(self, **kwargs):
|
---|
710 | - return self.get_query_set().create(**kwargs)
|
---|
711 | + return self.get_queryset().create(**kwargs)
|
---|
712 |
|
---|
713 | def bulk_create(self, *args, **kwargs):
|
---|
714 | - return self.get_query_set().bulk_create(*args, **kwargs)
|
---|
715 | + return self.get_queryset().bulk_create(*args, **kwargs)
|
---|
716 |
|
---|
717 | def filter(self, *args, **kwargs):
|
---|
718 | - return self.get_query_set().filter(*args, **kwargs)
|
---|
719 | + return self.get_queryset().filter(*args, **kwargs)
|
---|
720 |
|
---|
721 | def aggregate(self, *args, **kwargs):
|
---|
722 | - return self.get_query_set().aggregate(*args, **kwargs)
|
---|
723 | + return self.get_queryset().aggregate(*args, **kwargs)
|
---|
724 |
|
---|
725 | def annotate(self, *args, **kwargs):
|
---|
726 | - return self.get_query_set().annotate(*args, **kwargs)
|
---|
727 | + return self.get_queryset().annotate(*args, **kwargs)
|
---|
728 |
|
---|
729 | def complex_filter(self, *args, **kwargs):
|
---|
730 | - return self.get_query_set().complex_filter(*args, **kwargs)
|
---|
731 | + return self.get_queryset().complex_filter(*args, **kwargs)
|
---|
732 |
|
---|
733 | def exclude(self, *args, **kwargs):
|
---|
734 | - return self.get_query_set().exclude(*args, **kwargs)
|
---|
735 | + return self.get_queryset().exclude(*args, **kwargs)
|
---|
736 |
|
---|
737 | def in_bulk(self, *args, **kwargs):
|
---|
738 | - return self.get_query_set().in_bulk(*args, **kwargs)
|
---|
739 | + return self.get_queryset().in_bulk(*args, **kwargs)
|
---|
740 |
|
---|
741 | def iterator(self, *args, **kwargs):
|
---|
742 | - return self.get_query_set().iterator(*args, **kwargs)
|
---|
743 | + return self.get_queryset().iterator(*args, **kwargs)
|
---|
744 |
|
---|
745 | def earliest(self, *args, **kwargs):
|
---|
746 | - return self.get_query_set().earliest(*args, **kwargs)
|
---|
747 | + return self.get_queryset().earliest(*args, **kwargs)
|
---|
748 |
|
---|
749 | def latest(self, *args, **kwargs):
|
---|
750 | - return self.get_query_set().latest(*args, **kwargs)
|
---|
751 | + return self.get_queryset().latest(*args, **kwargs)
|
---|
752 |
|
---|
753 | def order_by(self, *args, **kwargs):
|
---|
754 | - return self.get_query_set().order_by(*args, **kwargs)
|
---|
755 | + return self.get_queryset().order_by(*args, **kwargs)
|
---|
756 |
|
---|
757 | def select_for_update(self, *args, **kwargs):
|
---|
758 | - return self.get_query_set().select_for_update(*args, **kwargs)
|
---|
759 | + return self.get_queryset().select_for_update(*args, **kwargs)
|
---|
760 |
|
---|
761 | def select_related(self, *args, **kwargs):
|
---|
762 | - return self.get_query_set().select_related(*args, **kwargs)
|
---|
763 | + return self.get_queryset().select_related(*args, **kwargs)
|
---|
764 |
|
---|
765 | def prefetch_related(self, *args, **kwargs):
|
---|
766 | - return self.get_query_set().prefetch_related(*args, **kwargs)
|
---|
767 | + return self.get_queryset().prefetch_related(*args, **kwargs)
|
---|
768 |
|
---|
769 | def values(self, *args, **kwargs):
|
---|
770 | - return self.get_query_set().values(*args, **kwargs)
|
---|
771 | + return self.get_queryset().values(*args, **kwargs)
|
---|
772 |
|
---|
773 | def values_list(self, *args, **kwargs):
|
---|
774 | - return self.get_query_set().values_list(*args, **kwargs)
|
---|
775 | + return self.get_queryset().values_list(*args, **kwargs)
|
---|
776 |
|
---|
777 | def update(self, *args, **kwargs):
|
---|
778 | - return self.get_query_set().update(*args, **kwargs)
|
---|
779 | + return self.get_queryset().update(*args, **kwargs)
|
---|
780 |
|
---|
781 | def reverse(self, *args, **kwargs):
|
---|
782 | - return self.get_query_set().reverse(*args, **kwargs)
|
---|
783 | + return self.get_queryset().reverse(*args, **kwargs)
|
---|
784 |
|
---|
785 | def defer(self, *args, **kwargs):
|
---|
786 | - return self.get_query_set().defer(*args, **kwargs)
|
---|
787 | + return self.get_queryset().defer(*args, **kwargs)
|
---|
788 |
|
---|
789 | def only(self, *args, **kwargs):
|
---|
790 | - return self.get_query_set().only(*args, **kwargs)
|
---|
791 | + return self.get_queryset().only(*args, **kwargs)
|
---|
792 |
|
---|
793 | def using(self, *args, **kwargs):
|
---|
794 | - return self.get_query_set().using(*args, **kwargs)
|
---|
795 | + return self.get_queryset().using(*args, **kwargs)
|
---|
796 |
|
---|
797 | def exists(self, *args, **kwargs):
|
---|
798 | - return self.get_query_set().exists(*args, **kwargs)
|
---|
799 | + return self.get_queryset().exists(*args, **kwargs)
|
---|
800 |
|
---|
801 | def _insert(self, objs, fields, **kwargs):
|
---|
802 | return insert_query(self.model, objs, fields, **kwargs)
|
---|
803 |
|
---|
804 | def _update(self, values, **kwargs):
|
---|
805 | - return self.get_query_set()._update(values, **kwargs)
|
---|
806 | + return self.get_queryset()._update(values, **kwargs)
|
---|
807 |
|
---|
808 | def raw(self, raw_query, params=None, *args, **kwargs):
|
---|
809 | return RawQuerySet(raw_query=raw_query, model=self.model, params=params, using=self._db, *args, **kwargs)
|
---|
810 | @@ -265,5 +274,5 @@ class EmptyManager(Manager):
|
---|
811 | super(EmptyManager, self).__init__()
|
---|
812 | self.model = model
|
---|
813 |
|
---|
814 | - def get_query_set(self):
|
---|
815 | - return super(EmptyManager, self).get_query_set().none()
|
---|
816 | + def get_queryset(self):
|
---|
817 | + return super(EmptyManager, self).get_queryset().none()
|
---|
818 | diff --git a/django/db/models/query.py b/django/db/models/query.py
|
---|
819 | index ec35f8a..30be30c 100644
|
---|
820 | --- a/django/db/models/query.py
|
---|
821 | +++ b/django/db/models/query.py
|
---|
822 | @@ -1733,9 +1733,9 @@ def prefetch_related_objects(result_cache, related_lookups):
|
---|
823 | def get_prefetcher(instance, attr):
|
---|
824 | """
|
---|
825 | For the attribute 'attr' on the given instance, finds
|
---|
826 | - an object that has a get_prefetch_query_set().
|
---|
827 | + an object that has a get_prefetch_queryset().
|
---|
828 | Returns a 4 tuple containing:
|
---|
829 | - (the object with get_prefetch_query_set (or None),
|
---|
830 | + (the object with get_prefetch_queryset (or None),
|
---|
831 | the descriptor object representing this relationship (or None),
|
---|
832 | a boolean that is False if the attribute was not found at all,
|
---|
833 | a boolean that is True if the attribute has already been fetched)
|
---|
834 | @@ -1758,8 +1758,8 @@ def get_prefetcher(instance, attr):
|
---|
835 | attr_found = True
|
---|
836 | if rel_obj_descriptor:
|
---|
837 | # singly related object, descriptor object has the
|
---|
838 | - # get_prefetch_query_set() method.
|
---|
839 | - if hasattr(rel_obj_descriptor, 'get_prefetch_query_set'):
|
---|
840 | + # get_prefetch_queryset() method.
|
---|
841 | + if hasattr(rel_obj_descriptor, 'get_prefetch_queryset'):
|
---|
842 | prefetcher = rel_obj_descriptor
|
---|
843 | if rel_obj_descriptor.is_cached(instance):
|
---|
844 | is_fetched = True
|
---|
845 | @@ -1768,7 +1768,7 @@ def get_prefetcher(instance, attr):
|
---|
846 | # the attribute on the instance rather than the class to
|
---|
847 | # support many related managers
|
---|
848 | rel_obj = getattr(instance, attr)
|
---|
849 | - if hasattr(rel_obj, 'get_prefetch_query_set'):
|
---|
850 | + if hasattr(rel_obj, 'get_prefetch_queryset'):
|
---|
851 | prefetcher = rel_obj
|
---|
852 | return prefetcher, rel_obj_descriptor, attr_found, is_fetched
|
---|
853 |
|
---|
854 | @@ -1784,7 +1784,7 @@ def prefetch_one_level(instances, prefetcher, attname):
|
---|
855 | prefetches that must be done due to prefetch_related lookups
|
---|
856 | found from default managers.
|
---|
857 | """
|
---|
858 | - # prefetcher must have a method get_prefetch_query_set() which takes a list
|
---|
859 | + # prefetcher must have a method get_prefetch_queryset() which takes a list
|
---|
860 | # of instances, and returns a tuple:
|
---|
861 |
|
---|
862 | # (queryset of instances of self.model that are related to passed in instances,
|
---|
863 | @@ -1797,7 +1797,7 @@ def prefetch_one_level(instances, prefetcher, attname):
|
---|
864 | # in a dictionary.
|
---|
865 |
|
---|
866 | rel_qs, rel_obj_attr, instance_attr, single, cache_name =\
|
---|
867 | - prefetcher.get_prefetch_query_set(instances)
|
---|
868 | + prefetcher.get_prefetch_queryset(instances)
|
---|
869 | # We have to handle the possibility that the default manager itself added
|
---|
870 | # prefetch_related lookups to the QuerySet we just got back. We don't want to
|
---|
871 | # trigger the prefetch_related functionality by evaluating the query.
|
---|
872 | diff --git a/django/forms/models.py b/django/forms/models.py
|
---|
873 | index 3905e9e..b44f811 100644
|
---|
874 | --- a/django/forms/models.py
|
---|
875 | +++ b/django/forms/models.py
|
---|
876 | @@ -479,7 +479,7 @@ class BaseModelFormSet(BaseFormSet):
|
---|
877 | if self.queryset is not None:
|
---|
878 | qs = self.queryset
|
---|
879 | else:
|
---|
880 | - qs = self.model._default_manager.get_query_set()
|
---|
881 | + qs = self.model._default_manager.get_queryset()
|
---|
882 |
|
---|
883 | # If the queryset isn't already ordered we need to add an
|
---|
884 | # artificial ordering here to make sure that all formsets
|
---|
885 | @@ -669,9 +669,9 @@ class BaseModelFormSet(BaseFormSet):
|
---|
886 | except IndexError:
|
---|
887 | pk_value = None
|
---|
888 | if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey):
|
---|
889 | - qs = pk.rel.to._default_manager.get_query_set()
|
---|
890 | + qs = pk.rel.to._default_manager.get_queryset()
|
---|
891 | else:
|
---|
892 | - qs = self.model._default_manager.get_query_set()
|
---|
893 | + qs = self.model._default_manager.get_queryset()
|
---|
894 | qs = qs.using(form.instance._state.db)
|
---|
895 | if form._meta.widgets:
|
---|
896 | widget = form._meta.widgets.get(self._pk_field.name, HiddenInput)
|
---|
897 | diff --git a/django/utils/deprecation.py b/django/utils/deprecation.py
|
---|
898 | new file mode 100644
|
---|
899 | index 0000000..fb3d2c3
|
---|
900 | --- /dev/null
|
---|
901 | +++ b/django/utils/deprecation.py
|
---|
902 | @@ -0,0 +1,59 @@
|
---|
903 | +import inspect
|
---|
904 | +import warnings
|
---|
905 | +
|
---|
906 | +
|
---|
907 | +class warn_about_renamed_method(object):
|
---|
908 | + def __init__(self, class_name, old_method_name, new_method_name):
|
---|
909 | + self.class_name = class_name
|
---|
910 | + self.old_method_name = old_method_name
|
---|
911 | + self.new_method_name = new_method_name
|
---|
912 | +
|
---|
913 | + def __call__(self, f):
|
---|
914 | + def wrapped(*args, **kwargs):
|
---|
915 | + warnings.warn(
|
---|
916 | + "`%s.%s` is deprecated, use `%s` instead." %
|
---|
917 | + (self.class_name, self.old_method_name, self.new_method_name),
|
---|
918 | + PendingDeprecationWarning, 2)
|
---|
919 | + return f(*args, **kwargs)
|
---|
920 | + return wrapped
|
---|
921 | +
|
---|
922 | +
|
---|
923 | +class RenameMethodsBase(type):
|
---|
924 | + """
|
---|
925 | + Handles the deprecation paths when renaming a method.
|
---|
926 | +
|
---|
927 | + It does the following:
|
---|
928 | + 1) Define the new method if missing and complain about it.
|
---|
929 | + 2) Define the old method if missing.
|
---|
930 | + 3) Complain whenever an old method is called.
|
---|
931 | +
|
---|
932 | + See #15363 for more details.
|
---|
933 | + """
|
---|
934 | +
|
---|
935 | + renamed_methods = ()
|
---|
936 | +
|
---|
937 | + def __new__(cls, name, bases, attrs):
|
---|
938 | + new_class = super(RenameMethodsBase, cls).__new__(cls, name, bases, attrs)
|
---|
939 | +
|
---|
940 | + for base in inspect.getmro(new_class):
|
---|
941 | + for old_method_name, new_method_name in cls.renamed_methods:
|
---|
942 | + old_method = base.__dict__.get(old_method_name)
|
---|
943 | + new_method = base.__dict__.get(new_method_name)
|
---|
944 | +
|
---|
945 | + info = (base.__name__, old_method_name, new_method_name)
|
---|
946 | +
|
---|
947 | + # Define the new method if missing and complain about it
|
---|
948 | + if not new_method and old_method:
|
---|
949 | + warnings.warn(
|
---|
950 | + "`%s.%s` method should be renamed `%s`." % info,
|
---|
951 | + PendingDeprecationWarning, 2)
|
---|
952 | + wrapped_old_method = warn_about_renamed_method(*info)(old_method)
|
---|
953 | + setattr(base, new_method_name, wrapped_old_method)
|
---|
954 | + setattr(base, old_method_name, wrapped_old_method)
|
---|
955 | +
|
---|
956 | + # Define the old method as a wrapped call to the new method.
|
---|
957 | + if not old_method and new_method:
|
---|
958 | + wrapped_new_method = warn_about_renamed_method(*info)(new_method)
|
---|
959 | + setattr(base, old_method_name, wrapped_new_method)
|
---|
960 | +
|
---|
961 | + return new_class
|
---|
962 | diff --git a/docs/faq/admin.txt b/docs/faq/admin.txt
|
---|
963 | index 30d452c..1d9a7c7 100644
|
---|
964 | --- a/docs/faq/admin.txt
|
---|
965 | +++ b/docs/faq/admin.txt
|
---|
966 | @@ -49,7 +49,7 @@ How do I limit admin access so that objects can only be edited by the users who
|
---|
967 | The :class:`~django.contrib.admin.ModelAdmin` class also provides customization
|
---|
968 | hooks that allow you to control the visibility and editability of objects in the
|
---|
969 | admin. Using the same trick of extracting the user from the request, the
|
---|
970 | -:meth:`~django.contrib.admin.ModelAdmin.queryset` and
|
---|
971 | +:meth:`~django.contrib.admin.ModelAdmin.get_queryset` and
|
---|
972 | :meth:`~django.contrib.admin.ModelAdmin.has_change_permission` can be used to
|
---|
973 | control the visibility and editability of objects in the admin.
|
---|
974 |
|
---|
975 | diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt
|
---|
976 | index 9ab1984..827518d 100644
|
---|
977 | --- a/docs/ref/contrib/admin/index.txt
|
---|
978 | +++ b/docs/ref/contrib/admin/index.txt
|
---|
979 | @@ -696,7 +696,7 @@ subclass::
|
---|
980 | Only show the lookups if there actually is
|
---|
981 | anyone born in the corresponding decades.
|
---|
982 | """
|
---|
983 | - qs = model_admin.queryset(request)
|
---|
984 | + qs = model_admin.get_queryset(request)
|
---|
985 | if qs.filter(birthday__gte=date(1980, 1, 1),
|
---|
986 | birthday__lte=date(1989, 12, 31)).exists():
|
---|
987 | yield ('80s', _('in the eighties'))
|
---|
988 | @@ -1319,16 +1319,16 @@ templates used by the :class:`ModelAdmin` views:
|
---|
989 | be interpreted as meaning that the current user is not permitted to delete
|
---|
990 | any object of this type).
|
---|
991 |
|
---|
992 | -.. method:: ModelAdmin.queryset(self, request)
|
---|
993 | +.. method:: ModelAdmin.get_queryset(self, request)
|
---|
994 |
|
---|
995 | - The ``queryset`` method on a ``ModelAdmin`` returns a
|
---|
996 | + The ``get_queryset`` method on a ``ModelAdmin`` returns a
|
---|
997 | :class:`~django.db.models.query.QuerySet` of all model instances that
|
---|
998 | can be edited by the admin site. One use case for overriding this method
|
---|
999 | is to show objects owned by the logged-in user::
|
---|
1000 |
|
---|
1001 | class MyModelAdmin(admin.ModelAdmin):
|
---|
1002 | - def queryset(self, request):
|
---|
1003 | - qs = super(MyModelAdmin, self).queryset(request)
|
---|
1004 | + def get_queryset(self, request):
|
---|
1005 | + qs = super(MyModelAdmin, self).get_queryset(request)
|
---|
1006 | if request.user.is_superuser:
|
---|
1007 | return qs
|
---|
1008 | return qs.filter(author=request.user)
|
---|
1009 | @@ -1542,7 +1542,7 @@ adds some of its own (the shared features are actually defined in the
|
---|
1010 | - :attr:`~ModelAdmin.filter_vertical`
|
---|
1011 | - :attr:`~ModelAdmin.ordering`
|
---|
1012 | - :attr:`~ModelAdmin.prepopulated_fields`
|
---|
1013 | -- :meth:`~ModelAdmin.queryset`
|
---|
1014 | +- :meth:`~ModelAdmin.get_queryset`
|
---|
1015 | - :attr:`~ModelAdmin.radio_fields`
|
---|
1016 | - :attr:`~ModelAdmin.readonly_fields`
|
---|
1017 | - :attr:`~InlineModelAdmin.raw_id_fields`
|
---|
1018 | diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt
|
---|
1019 | index f77f87d..638deef 100644
|
---|
1020 | --- a/docs/ref/models/querysets.txt
|
---|
1021 | +++ b/docs/ref/models/querysets.txt
|
---|
1022 | @@ -1591,32 +1591,32 @@ The most efficient method of finding whether a model with a unique field
|
---|
1023 | (e.g. ``primary_key``) is a member of a :class:`.QuerySet` is::
|
---|
1024 |
|
---|
1025 | entry = Entry.objects.get(pk=123)
|
---|
1026 | - if some_query_set.filter(pk=entry.pk).exists():
|
---|
1027 | + if some_queryset.filter(pk=entry.pk).exists():
|
---|
1028 | print("Entry contained in queryset")
|
---|
1029 |
|
---|
1030 | Which will be faster than the following which requires evaluating and iterating
|
---|
1031 | through the entire queryset::
|
---|
1032 |
|
---|
1033 | - if entry in some_query_set:
|
---|
1034 | + if entry in some_queryset:
|
---|
1035 | print("Entry contained in QuerySet")
|
---|
1036 |
|
---|
1037 | And to find whether a queryset contains any items::
|
---|
1038 |
|
---|
1039 | - if some_query_set.exists():
|
---|
1040 | - print("There is at least one object in some_query_set")
|
---|
1041 | + if some_queryset.exists():
|
---|
1042 | + print("There is at least one object in some_queryset")
|
---|
1043 |
|
---|
1044 | Which will be faster than::
|
---|
1045 |
|
---|
1046 | - if some_query_set:
|
---|
1047 | - print("There is at least one object in some_query_set")
|
---|
1048 | + if some_queryset:
|
---|
1049 | + print("There is at least one object in some_queryset")
|
---|
1050 |
|
---|
1051 | ... but not by a large degree (hence needing a large queryset for efficiency
|
---|
1052 | gains).
|
---|
1053 |
|
---|
1054 | -Additionally, if a ``some_query_set`` has not yet been evaluated, but you know
|
---|
1055 | -that it will be at some point, then using ``some_query_set.exists()`` will do
|
---|
1056 | +Additionally, if a ``some_queryset`` has not yet been evaluated, but you know
|
---|
1057 | +that it will be at some point, then using ``some_queryset.exists()`` will do
|
---|
1058 | more overall work (one query for the existence check plus an extra one to later
|
---|
1059 | -retrieve the results) than simply using ``bool(some_query_set)``, which
|
---|
1060 | +retrieve the results) than simply using ``bool(some_queryset)``, which
|
---|
1061 | retrieves the results and then checks if any were returned.
|
---|
1062 |
|
---|
1063 | update
|
---|
1064 | diff --git a/docs/topics/db/managers.txt b/docs/topics/db/managers.txt
|
---|
1065 | index a14616a..a90085f 100644
|
---|
1066 | --- a/docs/topics/db/managers.txt
|
---|
1067 | +++ b/docs/topics/db/managers.txt
|
---|
1068 | @@ -108,7 +108,7 @@ example, using this model::
|
---|
1069 | ...the statement ``Book.objects.all()`` will return all books in the database.
|
---|
1070 |
|
---|
1071 | You can override a ``Manager``\'s base ``QuerySet`` by overriding the
|
---|
1072 | -``Manager.get_query_set()`` method. ``get_query_set()`` should return a
|
---|
1073 | +``Manager.get_queryset()`` method. ``get_queryset()`` should return a
|
---|
1074 | ``QuerySet`` with the properties you require.
|
---|
1075 |
|
---|
1076 | For example, the following model has *two* ``Manager``\s -- one that returns
|
---|
1077 | @@ -116,8 +116,8 @@ all objects, and one that returns only the books by Roald Dahl::
|
---|
1078 |
|
---|
1079 | # First, define the Manager subclass.
|
---|
1080 | class DahlBookManager(models.Manager):
|
---|
1081 | - def get_query_set(self):
|
---|
1082 | - return super(DahlBookManager, self).get_query_set().filter(author='Roald Dahl')
|
---|
1083 | + def get_queryset(self):
|
---|
1084 | + return super(DahlBookManager, self).get_queryset().filter(author='Roald Dahl')
|
---|
1085 |
|
---|
1086 | # Then hook it into the Book model explicitly.
|
---|
1087 | class Book(models.Model):
|
---|
1088 | @@ -131,7 +131,7 @@ With this sample model, ``Book.objects.all()`` will return all books in the
|
---|
1089 | database, but ``Book.dahl_objects.all()`` will only return the ones written by
|
---|
1090 | Roald Dahl.
|
---|
1091 |
|
---|
1092 | -Of course, because ``get_query_set()`` returns a ``QuerySet`` object, you can
|
---|
1093 | +Of course, because ``get_queryset()`` returns a ``QuerySet`` object, you can
|
---|
1094 | use ``filter()``, ``exclude()`` and all the other ``QuerySet`` methods on it.
|
---|
1095 | So these statements are all legal::
|
---|
1096 |
|
---|
1097 | @@ -147,12 +147,12 @@ models.
|
---|
1098 | For example::
|
---|
1099 |
|
---|
1100 | class MaleManager(models.Manager):
|
---|
1101 | - def get_query_set(self):
|
---|
1102 | - return super(MaleManager, self).get_query_set().filter(sex='M')
|
---|
1103 | + def get_queryset(self):
|
---|
1104 | + return super(MaleManager, self).get_queryset().filter(sex='M')
|
---|
1105 |
|
---|
1106 | class FemaleManager(models.Manager):
|
---|
1107 | - def get_query_set(self):
|
---|
1108 | - return super(FemaleManager, self).get_query_set().filter(sex='F')
|
---|
1109 | + def get_queryset(self):
|
---|
1110 | + return super(FemaleManager, self).get_queryset().filter(sex='F')
|
---|
1111 |
|
---|
1112 | class Person(models.Model):
|
---|
1113 | first_name = models.CharField(max_length=50)
|
---|
1114 | @@ -172,7 +172,7 @@ the "default" ``Manager``, and several parts of Django
|
---|
1115 | (including :djadmin:`dumpdata`) will use that ``Manager``
|
---|
1116 | exclusively for that model. As a result, it's a good idea to be careful in
|
---|
1117 | your choice of default manager in order to avoid a situation where overriding
|
---|
1118 | -``get_query_set()`` results in an inability to retrieve objects you'd like to
|
---|
1119 | +``get_queryset()`` results in an inability to retrieve objects you'd like to
|
---|
1120 | work with.
|
---|
1121 |
|
---|
1122 | .. _managers-for-related-objects:
|
---|
1123 | @@ -379,9 +379,9 @@ to from some other model. In those situations, Django has to be able to see
|
---|
1124 | all the objects for the model it is fetching, so that *anything* which is
|
---|
1125 | referred to can be retrieved.
|
---|
1126 |
|
---|
1127 | -If you override the ``get_query_set()`` method and filter out any rows, Django
|
---|
1128 | +If you override the ``get_queryset()`` method and filter out any rows, Django
|
---|
1129 | will return incorrect results. Don't do that. A manager that filters results
|
---|
1130 | -in ``get_query_set()`` is not appropriate for use as an automatic manager.
|
---|
1131 | +in ``get_queryset()`` is not appropriate for use as an automatic manager.
|
---|
1132 |
|
---|
1133 | Set ``use_for_related_fields`` when you define the class
|
---|
1134 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
---|
1135 | diff --git a/docs/topics/db/multi-db.txt b/docs/topics/db/multi-db.txt
|
---|
1136 | index 8150e49..ae23c3d 100644
|
---|
1137 | --- a/docs/topics/db/multi-db.txt
|
---|
1138 | +++ b/docs/topics/db/multi-db.txt
|
---|
1139 | @@ -506,19 +506,19 @@ solution is to use ``db_manager()``, like this::
|
---|
1140 |
|
---|
1141 | ``db_manager()`` returns a copy of the manager bound to the database you specify.
|
---|
1142 |
|
---|
1143 | -Using ``get_query_set()`` with multiple databases
|
---|
1144 | +Using ``get_queryset()`` with multiple databases
|
---|
1145 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
---|
1146 |
|
---|
1147 | -If you're overriding ``get_query_set()`` on your manager, be sure to
|
---|
1148 | +If you're overriding ``get_queryset()`` on your manager, be sure to
|
---|
1149 | either call the method on the parent (using ``super()``) or do the
|
---|
1150 | appropriate handling of the ``_db`` attribute on the manager (a string
|
---|
1151 | containing the name of the database to use).
|
---|
1152 |
|
---|
1153 | For example, if you want to return a custom ``QuerySet`` class from
|
---|
1154 | -the ``get_query_set`` method, you could do this::
|
---|
1155 | +the ``get_queryset`` method, you could do this::
|
---|
1156 |
|
---|
1157 | class MyManager(models.Manager):
|
---|
1158 | - def get_query_set(self):
|
---|
1159 | + def get_queryset(self):
|
---|
1160 | qs = CustomQuerySet(self.model)
|
---|
1161 | if self._db is not None:
|
---|
1162 | qs = qs.using(self._db)
|
---|
1163 | @@ -548,9 +548,9 @@ multiple-database support::
|
---|
1164 | # Tell Django to delete objects from the 'other' database
|
---|
1165 | obj.delete(using=self.using)
|
---|
1166 |
|
---|
1167 | - def queryset(self, request):
|
---|
1168 | + def get_queryset(self, request):
|
---|
1169 | # Tell Django to look for objects on the 'other' database.
|
---|
1170 | - return super(MultiDBModelAdmin, self).queryset(request).using(self.using)
|
---|
1171 | + return super(MultiDBModelAdmin, self).get_queryset(request).using(self.using)
|
---|
1172 |
|
---|
1173 | def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
---|
1174 | # Tell Django to populate ForeignKey widgets using a query
|
---|
1175 | @@ -573,9 +573,9 @@ Inlines can be handled in a similar fashion. They require three customized metho
|
---|
1176 | class MultiDBTabularInline(admin.TabularInline):
|
---|
1177 | using = 'other'
|
---|
1178 |
|
---|
1179 | - def queryset(self, request):
|
---|
1180 | + def get_queryset(self, request):
|
---|
1181 | # Tell Django to look for inline objects on the 'other' database.
|
---|
1182 | - return super(MultiDBTabularInline, self).queryset(request).using(self.using)
|
---|
1183 | + return super(MultiDBTabularInline, self).get_queryset(request).using(self.using)
|
---|
1184 |
|
---|
1185 | def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
---|
1186 | # Tell Django to populate ForeignKey widgets using a query
|
---|
1187 | diff --git a/tests/admin_changelist/admin.py b/tests/admin_changelist/admin.py
|
---|
1188 | index 5751d04..8387ba7 100644
|
---|
1189 | --- a/tests/admin_changelist/admin.py
|
---|
1190 | +++ b/tests/admin_changelist/admin.py
|
---|
1191 | @@ -34,8 +34,8 @@ class ChildAdmin(admin.ModelAdmin):
|
---|
1192 | list_per_page = 10
|
---|
1193 | list_filter = ['parent', 'age']
|
---|
1194 |
|
---|
1195 | - def queryset(self, request):
|
---|
1196 | - return super(ChildAdmin, self).queryset(request).select_related("parent__name")
|
---|
1197 | + def get_queryset(self, request):
|
---|
1198 | + return super(ChildAdmin, self).get_queryset(request).select_related("parent__name")
|
---|
1199 |
|
---|
1200 |
|
---|
1201 | class CustomPaginationAdmin(ChildAdmin):
|
---|
1202 | @@ -46,8 +46,8 @@ class FilteredChildAdmin(admin.ModelAdmin):
|
---|
1203 | list_display = ['name', 'parent']
|
---|
1204 | list_per_page = 10
|
---|
1205 |
|
---|
1206 | - def queryset(self, request):
|
---|
1207 | - return super(FilteredChildAdmin, self).queryset(request).filter(
|
---|
1208 | + def get_queryset(self, request):
|
---|
1209 | + return super(FilteredChildAdmin, self).get_queryset(request).filter(
|
---|
1210 | name__contains='filtered')
|
---|
1211 |
|
---|
1212 |
|
---|
1213 | diff --git a/tests/admin_changelist/models.py b/tests/admin_changelist/models.py
|
---|
1214 | index 4ba2f9c..786b438 100644
|
---|
1215 | --- a/tests/admin_changelist/models.py
|
---|
1216 | +++ b/tests/admin_changelist/models.py
|
---|
1217 | @@ -74,8 +74,8 @@ class UnorderedObject(models.Model):
|
---|
1218 |
|
---|
1219 |
|
---|
1220 | class OrderedObjectManager(models.Manager):
|
---|
1221 | - def get_query_set(self):
|
---|
1222 | - return super(OrderedObjectManager, self).get_query_set().order_by('number')
|
---|
1223 | + def get_queryset(self):
|
---|
1224 | + return super(OrderedObjectManager, self).get_queryset().order_by('number')
|
---|
1225 |
|
---|
1226 | class OrderedObject(models.Model):
|
---|
1227 | """
|
---|
1228 | diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
|
---|
1229 | index bb39f22..5958792 100644
|
---|
1230 | --- a/tests/admin_changelist/tests.py
|
---|
1231 | +++ b/tests/admin_changelist/tests.py
|
---|
1232 | @@ -39,8 +39,8 @@ class ChangeListTests(TestCase):
|
---|
1233 |
|
---|
1234 | def test_select_related_preserved(self):
|
---|
1235 | """
|
---|
1236 | - Regression test for #10348: ChangeList.get_query_set() shouldn't
|
---|
1237 | - overwrite a custom select_related provided by ModelAdmin.queryset().
|
---|
1238 | + Regression test for #10348: ChangeList.get_queryset() shouldn't
|
---|
1239 | + overwrite a custom select_related provided by ModelAdmin.get_queryset().
|
---|
1240 | """
|
---|
1241 | m = ChildAdmin(Child, admin.site)
|
---|
1242 | request = self.factory.get('/child/')
|
---|
1243 | diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py
|
---|
1244 | index 11f792e..f05e8e2 100644
|
---|
1245 | --- a/tests/admin_filters/tests.py
|
---|
1246 | +++ b/tests/admin_filters/tests.py
|
---|
1247 | @@ -61,7 +61,7 @@ class DecadeListFilterWithFailingQueryset(DecadeListFilterWithTitleAndParameter)
|
---|
1248 | class DecadeListFilterWithQuerysetBasedLookups(DecadeListFilterWithTitleAndParameter):
|
---|
1249 |
|
---|
1250 | def lookups(self, request, model_admin):
|
---|
1251 | - qs = model_admin.queryset(request)
|
---|
1252 | + qs = model_admin.get_queryset(request)
|
---|
1253 | if qs.filter(year__gte=1980, year__lte=1989).exists():
|
---|
1254 | yield ('the 80s', "the 1980's")
|
---|
1255 | if qs.filter(year__gte=1990, year__lte=1999).exists():
|
---|
1256 | @@ -86,7 +86,7 @@ class DepartmentListFilterLookupWithNonStringValue(SimpleListFilter):
|
---|
1257 | return sorted(set([
|
---|
1258 | (employee.department.id, # Intentionally not a string (Refs #19318)
|
---|
1259 | employee.department.code)
|
---|
1260 | - for employee in model_admin.queryset(request).all()
|
---|
1261 | + for employee in model_admin.get_queryset(request).all()
|
---|
1262 | ]))
|
---|
1263 |
|
---|
1264 | def queryset(self, request, queryset):
|
---|
1265 | @@ -183,7 +183,7 @@ class ListFiltersTests(TestCase):
|
---|
1266 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1267 |
|
---|
1268 | # Make sure the correct queryset is returned
|
---|
1269 | - queryset = changelist.get_query_set(request)
|
---|
1270 | + queryset = changelist.get_queryset(request)
|
---|
1271 | self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book])
|
---|
1272 |
|
---|
1273 | # Make sure the correct choice is selected
|
---|
1274 | @@ -200,7 +200,7 @@ class ListFiltersTests(TestCase):
|
---|
1275 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1276 |
|
---|
1277 | # Make sure the correct queryset is returned
|
---|
1278 | - queryset = changelist.get_query_set(request)
|
---|
1279 | + queryset = changelist.get_queryset(request)
|
---|
1280 | if (self.today.year, self.today.month) == (self.one_week_ago.year, self.one_week_ago.month):
|
---|
1281 | # In case one week ago is in the same month.
|
---|
1282 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
---|
1283 | @@ -221,7 +221,7 @@ class ListFiltersTests(TestCase):
|
---|
1284 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1285 |
|
---|
1286 | # Make sure the correct queryset is returned
|
---|
1287 | - queryset = changelist.get_query_set(request)
|
---|
1288 | + queryset = changelist.get_queryset(request)
|
---|
1289 | if self.today.year == self.one_week_ago.year:
|
---|
1290 | # In case one week ago is in the same year.
|
---|
1291 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
---|
1292 | @@ -242,7 +242,7 @@ class ListFiltersTests(TestCase):
|
---|
1293 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1294 |
|
---|
1295 | # Make sure the correct queryset is returned
|
---|
1296 | - queryset = changelist.get_query_set(request)
|
---|
1297 | + queryset = changelist.get_queryset(request)
|
---|
1298 | self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
---|
1299 |
|
---|
1300 | # Make sure the correct choice is selected
|
---|
1301 | @@ -266,7 +266,7 @@ class ListFiltersTests(TestCase):
|
---|
1302 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1303 |
|
---|
1304 | # Make sure the correct queryset is returned
|
---|
1305 | - queryset = changelist.get_query_set(request)
|
---|
1306 | + queryset = changelist.get_queryset(request)
|
---|
1307 | self.assertEqual(list(queryset), [self.django_book])
|
---|
1308 |
|
---|
1309 | # Make sure the last choice is None and is selected
|
---|
1310 | @@ -293,7 +293,7 @@ class ListFiltersTests(TestCase):
|
---|
1311 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1312 |
|
---|
1313 | # Make sure the correct queryset is returned
|
---|
1314 | - queryset = changelist.get_query_set(request)
|
---|
1315 | + queryset = changelist.get_queryset(request)
|
---|
1316 | self.assertEqual(list(queryset), [self.gipsy_book])
|
---|
1317 |
|
---|
1318 | # Make sure the last choice is None and is selected
|
---|
1319 | @@ -321,7 +321,7 @@ class ListFiltersTests(TestCase):
|
---|
1320 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1321 |
|
---|
1322 | # Make sure the correct queryset is returned
|
---|
1323 | - queryset = changelist.get_query_set(request)
|
---|
1324 | + queryset = changelist.get_queryset(request)
|
---|
1325 | self.assertEqual(list(queryset), [self.django_book, self.bio_book, self.djangonaut_book])
|
---|
1326 |
|
---|
1327 | # Make sure the last choice is None and is selected
|
---|
1328 | @@ -349,7 +349,7 @@ class ListFiltersTests(TestCase):
|
---|
1329 | changelist = self.get_changelist(request, User, modeladmin)
|
---|
1330 |
|
---|
1331 | # Make sure the correct queryset is returned
|
---|
1332 | - queryset = changelist.get_query_set(request)
|
---|
1333 | + queryset = changelist.get_queryset(request)
|
---|
1334 | self.assertEqual(list(queryset), [self.lisa])
|
---|
1335 |
|
---|
1336 | # Make sure the last choice is None and is selected
|
---|
1337 | @@ -374,7 +374,7 @@ class ListFiltersTests(TestCase):
|
---|
1338 | changelist = self.get_changelist(request, User, modeladmin)
|
---|
1339 |
|
---|
1340 | # Make sure the correct queryset is returned
|
---|
1341 | - queryset = changelist.get_query_set(request)
|
---|
1342 | + queryset = changelist.get_queryset(request)
|
---|
1343 | self.assertEqual(list(queryset), [self.alfred])
|
---|
1344 |
|
---|
1345 | # Make sure the last choice is None and is selected
|
---|
1346 | @@ -410,7 +410,7 @@ class ListFiltersTests(TestCase):
|
---|
1347 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1348 |
|
---|
1349 | # Make sure the correct queryset is returned
|
---|
1350 | - queryset = changelist.get_query_set(request)
|
---|
1351 | + queryset = changelist.get_queryset(request)
|
---|
1352 | self.assertEqual(list(queryset), [self.bio_book])
|
---|
1353 |
|
---|
1354 | # Make sure the correct choice is selected
|
---|
1355 | @@ -424,7 +424,7 @@ class ListFiltersTests(TestCase):
|
---|
1356 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1357 |
|
---|
1358 | # Make sure the correct queryset is returned
|
---|
1359 | - queryset = changelist.get_query_set(request)
|
---|
1360 | + queryset = changelist.get_queryset(request)
|
---|
1361 | self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])
|
---|
1362 |
|
---|
1363 | # Make sure the correct choice is selected
|
---|
1364 | @@ -438,7 +438,7 @@ class ListFiltersTests(TestCase):
|
---|
1365 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1366 |
|
---|
1367 | # Make sure the correct queryset is returned
|
---|
1368 | - queryset = changelist.get_query_set(request)
|
---|
1369 | + queryset = changelist.get_queryset(request)
|
---|
1370 | self.assertEqual(list(queryset), [self.django_book])
|
---|
1371 |
|
---|
1372 | # Make sure the correct choice is selected
|
---|
1373 | @@ -457,7 +457,7 @@ class ListFiltersTests(TestCase):
|
---|
1374 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1375 |
|
---|
1376 | # Make sure the correct queryset is returned
|
---|
1377 | - queryset = changelist.get_query_set(request)
|
---|
1378 | + queryset = changelist.get_queryset(request)
|
---|
1379 | self.assertEqual(list(queryset), list(Book.objects.all().order_by('-id')))
|
---|
1380 |
|
---|
1381 | # Make sure the correct choice is selected
|
---|
1382 | @@ -474,7 +474,7 @@ class ListFiltersTests(TestCase):
|
---|
1383 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1384 |
|
---|
1385 | # Make sure the correct queryset is returned
|
---|
1386 | - queryset = changelist.get_query_set(request)
|
---|
1387 | + queryset = changelist.get_queryset(request)
|
---|
1388 | self.assertEqual(list(queryset), [])
|
---|
1389 |
|
---|
1390 | # Make sure the correct choice is selected
|
---|
1391 | @@ -491,7 +491,7 @@ class ListFiltersTests(TestCase):
|
---|
1392 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1393 |
|
---|
1394 | # Make sure the correct queryset is returned
|
---|
1395 | - queryset = changelist.get_query_set(request)
|
---|
1396 | + queryset = changelist.get_queryset(request)
|
---|
1397 | self.assertEqual(list(queryset), [self.bio_book])
|
---|
1398 |
|
---|
1399 | # Make sure the correct choice is selected
|
---|
1400 | @@ -508,7 +508,7 @@ class ListFiltersTests(TestCase):
|
---|
1401 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1402 |
|
---|
1403 | # Make sure the correct queryset is returned
|
---|
1404 | - queryset = changelist.get_query_set(request)
|
---|
1405 | + queryset = changelist.get_queryset(request)
|
---|
1406 | self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])
|
---|
1407 |
|
---|
1408 | # Make sure the correct choice is selected
|
---|
1409 | @@ -525,7 +525,7 @@ class ListFiltersTests(TestCase):
|
---|
1410 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1411 |
|
---|
1412 | # Make sure the correct queryset is returned
|
---|
1413 | - queryset = changelist.get_query_set(request)
|
---|
1414 | + queryset = changelist.get_queryset(request)
|
---|
1415 | self.assertEqual(list(queryset), [self.djangonaut_book])
|
---|
1416 |
|
---|
1417 | # Make sure the correct choices are selected
|
---|
1418 | @@ -615,7 +615,7 @@ class ListFiltersTests(TestCase):
|
---|
1419 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1420 |
|
---|
1421 | # Make sure the correct queryset is returned
|
---|
1422 | - queryset = changelist.get_query_set(request)
|
---|
1423 | + queryset = changelist.get_queryset(request)
|
---|
1424 | self.assertEqual(list(queryset), [self.bio_book])
|
---|
1425 |
|
---|
1426 | filterspec = changelist.get_filters(request)[0][-1]
|
---|
1427 | @@ -637,7 +637,7 @@ class ListFiltersTests(TestCase):
|
---|
1428 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1429 |
|
---|
1430 | # Make sure the correct queryset is returned
|
---|
1431 | - queryset = changelist.get_query_set(request)
|
---|
1432 | + queryset = changelist.get_queryset(request)
|
---|
1433 | self.assertEqual(list(queryset), [self.bio_book])
|
---|
1434 |
|
---|
1435 | # Make sure the correct choice is selected
|
---|
1436 | @@ -654,7 +654,7 @@ class ListFiltersTests(TestCase):
|
---|
1437 | changelist = self.get_changelist(request, Book, modeladmin)
|
---|
1438 |
|
---|
1439 | # Make sure the correct queryset is returned
|
---|
1440 | - queryset = changelist.get_query_set(request)
|
---|
1441 | + queryset = changelist.get_queryset(request)
|
---|
1442 | self.assertEqual(list(queryset), [self.bio_book])
|
---|
1443 |
|
---|
1444 | # Make sure the correct choice is selected
|
---|
1445 | @@ -676,7 +676,7 @@ class ListFiltersTests(TestCase):
|
---|
1446 | request = self.request_factory.get('/', {'department': self.john.pk})
|
---|
1447 | changelist = self.get_changelist(request, Employee, modeladmin)
|
---|
1448 |
|
---|
1449 | - queryset = changelist.get_query_set(request)
|
---|
1450 | + queryset = changelist.get_queryset(request)
|
---|
1451 |
|
---|
1452 | self.assertEqual(list(queryset), [self.john])
|
---|
1453 |
|
---|
1454 | @@ -698,7 +698,7 @@ class ListFiltersTests(TestCase):
|
---|
1455 | changelist = self.get_changelist(request, Employee, modeladmin)
|
---|
1456 |
|
---|
1457 | # Make sure the correct queryset is returned
|
---|
1458 | - queryset = changelist.get_query_set(request)
|
---|
1459 | + queryset = changelist.get_queryset(request)
|
---|
1460 | self.assertEqual(list(queryset), [self.jack, self.john])
|
---|
1461 |
|
---|
1462 | filterspec = changelist.get_filters(request)[0][-1]
|
---|
1463 | @@ -723,7 +723,7 @@ class ListFiltersTests(TestCase):
|
---|
1464 | changelist = self.get_changelist(request, Employee, modeladmin)
|
---|
1465 |
|
---|
1466 | # Make sure the correct queryset is returned
|
---|
1467 | - queryset = changelist.get_query_set(request)
|
---|
1468 | + queryset = changelist.get_queryset(request)
|
---|
1469 | self.assertEqual(list(queryset), [self.john])
|
---|
1470 |
|
---|
1471 | filterspec = changelist.get_filters(request)[0][-1]
|
---|
1472 | diff --git a/tests/admin_ordering/tests.py b/tests/admin_ordering/tests.py
|
---|
1473 | index faae834..26b720b 100644
|
---|
1474 | --- a/tests/admin_ordering/tests.py
|
---|
1475 | +++ b/tests/admin_ordering/tests.py
|
---|
1476 | @@ -21,8 +21,8 @@ request.user = MockSuperUser()
|
---|
1477 |
|
---|
1478 | class TestAdminOrdering(TestCase):
|
---|
1479 | """
|
---|
1480 | - Let's make sure that ModelAdmin.queryset uses the ordering we define in
|
---|
1481 | - ModelAdmin rather that ordering defined in the model's inner Meta
|
---|
1482 | + Let's make sure that ModelAdmin.get_queryset uses the ordering we define
|
---|
1483 | + in ModelAdmin rather that ordering defined in the model's inner Meta
|
---|
1484 | class.
|
---|
1485 | """
|
---|
1486 |
|
---|
1487 | @@ -41,7 +41,7 @@ class TestAdminOrdering(TestCase):
|
---|
1488 | class.
|
---|
1489 | """
|
---|
1490 | ma = ModelAdmin(Band, None)
|
---|
1491 | - names = [b.name for b in ma.queryset(request)]
|
---|
1492 | + names = [b.name for b in ma.get_queryset(request)]
|
---|
1493 | self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)
|
---|
1494 |
|
---|
1495 | def test_specified_ordering(self):
|
---|
1496 | @@ -52,7 +52,7 @@ class TestAdminOrdering(TestCase):
|
---|
1497 | class BandAdmin(ModelAdmin):
|
---|
1498 | ordering = ('rank',) # default ordering is ('name',)
|
---|
1499 | ma = BandAdmin(Band, None)
|
---|
1500 | - names = [b.name for b in ma.queryset(request)]
|
---|
1501 | + names = [b.name for b in ma.get_queryset(request)]
|
---|
1502 | self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)
|
---|
1503 |
|
---|
1504 | def test_dynamic_ordering(self):
|
---|
1505 | @@ -64,17 +64,17 @@ class TestAdminOrdering(TestCase):
|
---|
1506 | request = self.request_factory.get('/')
|
---|
1507 | request.user = super_user
|
---|
1508 | ma = DynOrderingBandAdmin(Band, None)
|
---|
1509 | - names = [b.name for b in ma.queryset(request)]
|
---|
1510 | + names = [b.name for b in ma.get_queryset(request)]
|
---|
1511 | self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)
|
---|
1512 | request.user = other_user
|
---|
1513 | - names = [b.name for b in ma.queryset(request)]
|
---|
1514 | + names = [b.name for b in ma.get_queryset(request)]
|
---|
1515 | self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)
|
---|
1516 |
|
---|
1517 |
|
---|
1518 | class TestInlineModelAdminOrdering(TestCase):
|
---|
1519 | """
|
---|
1520 | - Let's make sure that InlineModelAdmin.queryset uses the ordering we define
|
---|
1521 | - in InlineModelAdmin.
|
---|
1522 | + Let's make sure that InlineModelAdmin.get_queryset uses the ordering we
|
---|
1523 | + define in InlineModelAdmin.
|
---|
1524 | """
|
---|
1525 |
|
---|
1526 | def setUp(self):
|
---|
1527 | @@ -94,7 +94,7 @@ class TestInlineModelAdminOrdering(TestCase):
|
---|
1528 | class.
|
---|
1529 | """
|
---|
1530 | inline = SongInlineDefaultOrdering(self.b, None)
|
---|
1531 | - names = [s.name for s in inline.queryset(request)]
|
---|
1532 | + names = [s.name for s in inline.get_queryset(request)]
|
---|
1533 | self.assertEqual(['Dude (Looks Like a Lady)', 'Jaded', 'Pink'], names)
|
---|
1534 |
|
---|
1535 | def test_specified_ordering(self):
|
---|
1536 | @@ -102,5 +102,5 @@ class TestInlineModelAdminOrdering(TestCase):
|
---|
1537 | Let's check with ordering set to something different than the default.
|
---|
1538 | """
|
---|
1539 | inline = SongInlineNewOrdering(self.b, None)
|
---|
1540 | - names = [s.name for s in inline.queryset(request)]
|
---|
1541 | + names = [s.name for s in inline.get_queryset(request)]
|
---|
1542 | self.assertEqual(['Jaded', 'Pink', 'Dude (Looks Like a Lady)'], names)
|
---|
1543 | diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
|
---|
1544 | index d434896..06451ab 100644
|
---|
1545 | --- a/tests/admin_views/admin.py
|
---|
1546 | +++ b/tests/admin_views/admin.py
|
---|
1547 | @@ -177,10 +177,10 @@ class PersonAdmin(admin.ModelAdmin):
|
---|
1548 | return super(PersonAdmin, self).get_changelist_formset(request,
|
---|
1549 | formset=BasePersonModelFormSet, **kwargs)
|
---|
1550 |
|
---|
1551 | - def queryset(self, request):
|
---|
1552 | + def get_queryset(self, request):
|
---|
1553 | # Order by a field that isn't in list display, to be able to test
|
---|
1554 | # whether ordering is preserved.
|
---|
1555 | - return super(PersonAdmin, self).queryset(request).order_by('age')
|
---|
1556 | + return super(PersonAdmin, self).get_queryset(request).order_by('age')
|
---|
1557 |
|
---|
1558 |
|
---|
1559 | class FooAccount(Account):
|
---|
1560 | @@ -283,8 +283,8 @@ class ParentAdmin(admin.ModelAdmin):
|
---|
1561 |
|
---|
1562 |
|
---|
1563 | class EmptyModelAdmin(admin.ModelAdmin):
|
---|
1564 | - def queryset(self, request):
|
---|
1565 | - return super(EmptyModelAdmin, self).queryset(request).filter(pk__gt=1)
|
---|
1566 | + def get_queryset(self, request):
|
---|
1567 | + return super(EmptyModelAdmin, self).get_queryset(request).filter(pk__gt=1)
|
---|
1568 |
|
---|
1569 |
|
---|
1570 | class OldSubscriberAdmin(admin.ModelAdmin):
|
---|
1571 | @@ -427,7 +427,7 @@ class PostAdmin(admin.ModelAdmin):
|
---|
1572 |
|
---|
1573 |
|
---|
1574 | class CustomChangeList(ChangeList):
|
---|
1575 | - def get_query_set(self, request):
|
---|
1576 | + def get_queryset(self, request):
|
---|
1577 | return self.root_query_set.filter(pk=9999) # Does not exist
|
---|
1578 |
|
---|
1579 |
|
---|
1580 | @@ -452,52 +452,52 @@ class FoodDeliveryAdmin(admin.ModelAdmin):
|
---|
1581 |
|
---|
1582 | class CoverLetterAdmin(admin.ModelAdmin):
|
---|
1583 | """
|
---|
1584 | - A ModelAdmin with a custom queryset() method that uses defer(), to test
|
---|
1585 | + A ModelAdmin with a custom get_queryset() method that uses defer(), to test
|
---|
1586 | verbose_name display in messages shown after adding/editing CoverLetter
|
---|
1587 | instances.
|
---|
1588 | Note that the CoverLetter model defines a __unicode__ method.
|
---|
1589 | For testing fix for ticket #14529.
|
---|
1590 | """
|
---|
1591 |
|
---|
1592 | - def queryset(self, request):
|
---|
1593 | - return super(CoverLetterAdmin, self).queryset(request).defer('date_written')
|
---|
1594 | + def get_queryset(self, request):
|
---|
1595 | + return super(CoverLetterAdmin, self).get_queryset(request).defer('date_written')
|
---|
1596 |
|
---|
1597 |
|
---|
1598 | class PaperAdmin(admin.ModelAdmin):
|
---|
1599 | """
|
---|
1600 | - A ModelAdmin with a custom queryset() method that uses only(), to test
|
---|
1601 | + A ModelAdmin with a custom get_queryset() method that uses only(), to test
|
---|
1602 | verbose_name display in messages shown after adding/editing Paper
|
---|
1603 | instances.
|
---|
1604 | For testing fix for ticket #14529.
|
---|
1605 | """
|
---|
1606 |
|
---|
1607 | - def queryset(self, request):
|
---|
1608 | - return super(PaperAdmin, self).queryset(request).only('title')
|
---|
1609 | + def get_queryset(self, request):
|
---|
1610 | + return super(PaperAdmin, self).get_queryset(request).only('title')
|
---|
1611 |
|
---|
1612 |
|
---|
1613 | class ShortMessageAdmin(admin.ModelAdmin):
|
---|
1614 | """
|
---|
1615 | - A ModelAdmin with a custom queryset() method that uses defer(), to test
|
---|
1616 | + A ModelAdmin with a custom get_queryset() method that uses defer(), to test
|
---|
1617 | verbose_name display in messages shown after adding/editing ShortMessage
|
---|
1618 | instances.
|
---|
1619 | For testing fix for ticket #14529.
|
---|
1620 | """
|
---|
1621 |
|
---|
1622 | - def queryset(self, request):
|
---|
1623 | - return super(ShortMessageAdmin, self).queryset(request).defer('timestamp')
|
---|
1624 | + def get_queryset(self, request):
|
---|
1625 | + return super(ShortMessageAdmin, self).get_queryset(request).defer('timestamp')
|
---|
1626 |
|
---|
1627 |
|
---|
1628 | class TelegramAdmin(admin.ModelAdmin):
|
---|
1629 | """
|
---|
1630 | - A ModelAdmin with a custom queryset() method that uses only(), to test
|
---|
1631 | + A ModelAdmin with a custom get_queryset() method that uses only(), to test
|
---|
1632 | verbose_name display in messages shown after adding/editing Telegram
|
---|
1633 | instances.
|
---|
1634 | Note that the Telegram model defines a __unicode__ method.
|
---|
1635 | For testing fix for ticket #14529.
|
---|
1636 | """
|
---|
1637 |
|
---|
1638 | - def queryset(self, request):
|
---|
1639 | - return super(TelegramAdmin, self).queryset(request).only('title')
|
---|
1640 | + def get_queryset(self, request):
|
---|
1641 | + return super(TelegramAdmin, self).get_queryset(request).only('title')
|
---|
1642 |
|
---|
1643 |
|
---|
1644 | class StoryForm(forms.ModelForm):
|
---|
1645 | diff --git a/tests/admin_views/customadmin.py b/tests/admin_views/customadmin.py
|
---|
1646 | index d69d690..c204b81 100644
|
---|
1647 | --- a/tests/admin_views/customadmin.py
|
---|
1648 | +++ b/tests/admin_views/customadmin.py
|
---|
1649 | @@ -35,8 +35,8 @@ class Admin2(admin.AdminSite):
|
---|
1650 |
|
---|
1651 | class UserLimitedAdmin(UserAdmin):
|
---|
1652 | # used for testing password change on a user not in queryset
|
---|
1653 | - def queryset(self, request):
|
---|
1654 | - qs = super(UserLimitedAdmin, self).queryset(request)
|
---|
1655 | + def get_queryset(self, request):
|
---|
1656 | + qs = super(UserLimitedAdmin, self).get_queryset(request)
|
---|
1657 | return qs.filter(is_superuser=False)
|
---|
1658 |
|
---|
1659 |
|
---|
1660 | diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
|
---|
1661 | index 0bcfc0c..3027a49 100644
|
---|
1662 | --- a/tests/admin_views/tests.py
|
---|
1663 | +++ b/tests/admin_views/tests.py
|
---|
1664 | @@ -282,7 +282,7 @@ class AdminViewBasicTest(TestCase):
|
---|
1665 | """
|
---|
1666 | If no ordering is defined in `ModelAdmin.ordering` or in the query
|
---|
1667 | string, then the underlying order of the queryset should not be
|
---|
1668 | - changed, even if it is defined in `Modeladmin.queryset()`.
|
---|
1669 | + changed, even if it is defined in `Modeladmin.get_queryset()`.
|
---|
1670 | Refs #11868, #7309.
|
---|
1671 | """
|
---|
1672 | p1 = Person.objects.create(name="Amy", gender=1, alive=True, age=80)
|
---|
1673 | @@ -2574,7 +2574,7 @@ class AdminCustomQuerysetTest(TestCase):
|
---|
1674 | self.assertEqual(response.status_code, 404)
|
---|
1675 |
|
---|
1676 | def test_add_model_modeladmin_defer_qs(self):
|
---|
1677 | - # Test for #14529. defer() is used in ModelAdmin.queryset()
|
---|
1678 | + # Test for #14529. defer() is used in ModelAdmin.get_queryset()
|
---|
1679 |
|
---|
1680 | # model has __unicode__ method
|
---|
1681 | self.assertEqual(CoverLetter.objects.count(), 0)
|
---|
1682 | @@ -2613,7 +2613,7 @@ class AdminCustomQuerysetTest(TestCase):
|
---|
1683 | )
|
---|
1684 |
|
---|
1685 | def test_add_model_modeladmin_only_qs(self):
|
---|
1686 | - # Test for #14529. only() is used in ModelAdmin.queryset()
|
---|
1687 | + # Test for #14529. only() is used in ModelAdmin.get_queryset()
|
---|
1688 |
|
---|
1689 | # model has __unicode__ method
|
---|
1690 | self.assertEqual(Telegram.objects.count(), 0)
|
---|
1691 | @@ -2652,7 +2652,7 @@ class AdminCustomQuerysetTest(TestCase):
|
---|
1692 | )
|
---|
1693 |
|
---|
1694 | def test_edit_model_modeladmin_defer_qs(self):
|
---|
1695 | - # Test for #14529. defer() is used in ModelAdmin.queryset()
|
---|
1696 | + # Test for #14529. defer() is used in ModelAdmin.get_queryset()
|
---|
1697 |
|
---|
1698 | # model has __unicode__ method
|
---|
1699 | cl = CoverLetter.objects.create(author="John Doe")
|
---|
1700 | @@ -2699,7 +2699,7 @@ class AdminCustomQuerysetTest(TestCase):
|
---|
1701 | )
|
---|
1702 |
|
---|
1703 | def test_edit_model_modeladmin_only_qs(self):
|
---|
1704 | - # Test for #14529. only() is used in ModelAdmin.queryset()
|
---|
1705 | + # Test for #14529. only() is used in ModelAdmin.get_queryset()
|
---|
1706 |
|
---|
1707 | # model has __unicode__ method
|
---|
1708 | t = Telegram.objects.create(title="Frist Telegram")
|
---|
1709 | diff --git a/tests/admin_widgets/models.py b/tests/admin_widgets/models.py
|
---|
1710 | index 2977b86..ae19d58 100644
|
---|
1711 | --- a/tests/admin_widgets/models.py
|
---|
1712 | +++ b/tests/admin_widgets/models.py
|
---|
1713 | @@ -37,8 +37,8 @@ class Album(models.Model):
|
---|
1714 | return self.name
|
---|
1715 |
|
---|
1716 | class HiddenInventoryManager(models.Manager):
|
---|
1717 | - def get_query_set(self):
|
---|
1718 | - return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False)
|
---|
1719 | + def get_queryset(self):
|
---|
1720 | + return super(HiddenInventoryManager, self).get_queryset().filter(hidden=False)
|
---|
1721 |
|
---|
1722 | @python_2_unicode_compatible
|
---|
1723 | class Inventory(models.Model):
|
---|
1724 | diff --git a/tests/custom_managers/models.py b/tests/custom_managers/models.py
|
---|
1725 | index de7c177..2f5e62f 100644
|
---|
1726 | --- a/tests/custom_managers/models.py
|
---|
1727 | +++ b/tests/custom_managers/models.py
|
---|
1728 | @@ -30,11 +30,11 @@ class Person(models.Model):
|
---|
1729 | def __str__(self):
|
---|
1730 | return "%s %s" % (self.first_name, self.last_name)
|
---|
1731 |
|
---|
1732 | -# An example of a custom manager that sets get_query_set().
|
---|
1733 | +# An example of a custom manager that sets get_queryset().
|
---|
1734 |
|
---|
1735 | class PublishedBookManager(models.Manager):
|
---|
1736 | - def get_query_set(self):
|
---|
1737 | - return super(PublishedBookManager, self).get_query_set().filter(is_published=True)
|
---|
1738 | + def get_queryset(self):
|
---|
1739 | + return super(PublishedBookManager, self).get_queryset().filter(is_published=True)
|
---|
1740 |
|
---|
1741 | @python_2_unicode_compatible
|
---|
1742 | class Book(models.Model):
|
---|
1743 | @@ -50,8 +50,8 @@ class Book(models.Model):
|
---|
1744 | # An example of providing multiple custom managers.
|
---|
1745 |
|
---|
1746 | class FastCarManager(models.Manager):
|
---|
1747 | - def get_query_set(self):
|
---|
1748 | - return super(FastCarManager, self).get_query_set().filter(top_speed__gt=150)
|
---|
1749 | + def get_queryset(self):
|
---|
1750 | + return super(FastCarManager, self).get_queryset().filter(top_speed__gt=150)
|
---|
1751 |
|
---|
1752 | @python_2_unicode_compatible
|
---|
1753 | class Car(models.Model):
|
---|
1754 | diff --git a/tests/custom_managers_regress/models.py b/tests/custom_managers_regress/models.py
|
---|
1755 | index 71073f0..95cf6e8 100644
|
---|
1756 | --- a/tests/custom_managers_regress/models.py
|
---|
1757 | +++ b/tests/custom_managers_regress/models.py
|
---|
1758 | @@ -10,8 +10,8 @@ class RestrictedManager(models.Manager):
|
---|
1759 | """
|
---|
1760 | A manager that filters out non-public instances.
|
---|
1761 | """
|
---|
1762 | - def get_query_set(self):
|
---|
1763 | - return super(RestrictedManager, self).get_query_set().filter(is_public=True)
|
---|
1764 | + def get_queryset(self):
|
---|
1765 | + return super(RestrictedManager, self).get_queryset().filter(is_public=True)
|
---|
1766 |
|
---|
1767 | @python_2_unicode_compatible
|
---|
1768 | class RelatedModel(models.Model):
|
---|
1769 | diff --git a/tests/deprecation/__init__.py b/tests/deprecation/__init__.py
|
---|
1770 | new file mode 100644
|
---|
1771 | index 0000000..e69de29
|
---|
1772 | diff --git a/tests/deprecation/models.py b/tests/deprecation/models.py
|
---|
1773 | new file mode 100644
|
---|
1774 | index 0000000..e69de29
|
---|
1775 | diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py
|
---|
1776 | new file mode 100644
|
---|
1777 | index 0000000..6317e54
|
---|
1778 | --- /dev/null
|
---|
1779 | +++ b/tests/deprecation/tests.py
|
---|
1780 | @@ -0,0 +1,172 @@
|
---|
1781 | +from __future__ import unicode_literals
|
---|
1782 | +import warnings
|
---|
1783 | +
|
---|
1784 | +from django.test.testcases import SimpleTestCase
|
---|
1785 | +from django.utils import six
|
---|
1786 | +from django.utils.deprecation import RenameMethodsBase
|
---|
1787 | +
|
---|
1788 | +
|
---|
1789 | +class RenameManagerMethods(RenameMethodsBase):
|
---|
1790 | + renamed_methods = (
|
---|
1791 | + ('old', 'new'),
|
---|
1792 | + )
|
---|
1793 | +
|
---|
1794 | +
|
---|
1795 | +class RenameMethodsTests(SimpleTestCase):
|
---|
1796 | + """
|
---|
1797 | + Tests the `RenameMethodsBase` type introduced to rename `get_query_set`
|
---|
1798 | + to `get_queryset` across the code base following #15363.
|
---|
1799 | + """
|
---|
1800 | +
|
---|
1801 | + def test_class_definition_warnings(self):
|
---|
1802 | + """
|
---|
1803 | + Ensure a warning is raised upon class definition to suggest renaming
|
---|
1804 | + the faulty method.
|
---|
1805 | + """
|
---|
1806 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1807 | + warnings.simplefilter('always')
|
---|
1808 | + class Manager(six.with_metaclass(RenameManagerMethods)):
|
---|
1809 | + def old(self):
|
---|
1810 | + pass
|
---|
1811 | + self.assertEqual(len(recorded), 1)
|
---|
1812 | + msg = str(recorded[0].message)
|
---|
1813 | + self.assertEqual(msg,
|
---|
1814 | + '`Manager.old` method should be renamed `new`.')
|
---|
1815 | +
|
---|
1816 | + def test_get_new_defined(self):
|
---|
1817 | + """
|
---|
1818 | + Ensure `old` complains and not `new` when only `new` is defined.
|
---|
1819 | + """
|
---|
1820 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1821 | + warnings.simplefilter('ignore')
|
---|
1822 | + class Manager(six.with_metaclass(RenameManagerMethods)):
|
---|
1823 | + def new(self):
|
---|
1824 | + pass
|
---|
1825 | + warnings.simplefilter('always')
|
---|
1826 | + manager = Manager()
|
---|
1827 | + manager.new()
|
---|
1828 | + self.assertEqual(len(recorded), 0)
|
---|
1829 | + manager.old()
|
---|
1830 | + self.assertEqual(len(recorded), 1)
|
---|
1831 | + msg = str(recorded.pop().message)
|
---|
1832 | + self.assertEqual(msg,
|
---|
1833 | + '`Manager.old` is deprecated, use `new` instead.')
|
---|
1834 | +
|
---|
1835 | + def test_get_old_defined(self):
|
---|
1836 | + """
|
---|
1837 | + Ensure `old` complains when only `old` is defined.
|
---|
1838 | + """
|
---|
1839 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1840 | + warnings.simplefilter('ignore')
|
---|
1841 | + class Manager(six.with_metaclass(RenameManagerMethods)):
|
---|
1842 | + def old(self):
|
---|
1843 | + pass
|
---|
1844 | + warnings.simplefilter('always')
|
---|
1845 | + manager = Manager()
|
---|
1846 | + manager.new()
|
---|
1847 | + self.assertEqual(len(recorded), 1)
|
---|
1848 | + msg = str(recorded.pop().message)
|
---|
1849 | + self.assertEqual(msg,
|
---|
1850 | + '`Manager.old` is deprecated, use `new` instead.')
|
---|
1851 | + manager.old()
|
---|
1852 | + self.assertEqual(len(recorded), 1)
|
---|
1853 | + msg = str(recorded.pop().message)
|
---|
1854 | + self.assertEqual(msg,
|
---|
1855 | + '`Manager.old` is deprecated, use `new` instead.')
|
---|
1856 | +
|
---|
1857 | + def test_deprecated_subclass_renamed(self):
|
---|
1858 | + """
|
---|
1859 | + Ensure the correct warnings are raised when a class that didn't rename
|
---|
1860 | + `old` subclass one that did.
|
---|
1861 | + """
|
---|
1862 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1863 | + warnings.simplefilter('ignore')
|
---|
1864 | + class Renamed(six.with_metaclass(RenameManagerMethods)):
|
---|
1865 | + def new(self):
|
---|
1866 | + pass
|
---|
1867 | + class Deprecated(Renamed):
|
---|
1868 | + def old(self):
|
---|
1869 | + super(Deprecated, self).old()
|
---|
1870 | + warnings.simplefilter('always')
|
---|
1871 | + deprecated = Deprecated()
|
---|
1872 | + deprecated.new()
|
---|
1873 | + self.assertEqual(len(recorded), 2)
|
---|
1874 | + msgs = [str(warning.message) for warning in recorded]
|
---|
1875 | + self.assertEqual(msgs, [
|
---|
1876 | + '`Deprecated.old` is deprecated, use `new` instead.',
|
---|
1877 | + '`Renamed.old` is deprecated, use `new` instead.',
|
---|
1878 | + ])
|
---|
1879 | + recorded[:] = []
|
---|
1880 | + deprecated.old()
|
---|
1881 | + self.assertEqual(len(recorded), 2)
|
---|
1882 | + msgs = [str(warning.message) for warning in recorded]
|
---|
1883 | + self.assertEqual(msgs, [
|
---|
1884 | + '`Deprecated.old` is deprecated, use `new` instead.',
|
---|
1885 | + '`Renamed.old` is deprecated, use `new` instead.',
|
---|
1886 | + ])
|
---|
1887 | +
|
---|
1888 | + def test_renamed_subclass_deprecated(self):
|
---|
1889 | + """
|
---|
1890 | + Ensure the correct warnings are raised when a class that renamed
|
---|
1891 | + `old` subclass one that didn't.
|
---|
1892 | + """
|
---|
1893 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1894 | + warnings.simplefilter('ignore')
|
---|
1895 | + class Deprecated(six.with_metaclass(RenameManagerMethods)):
|
---|
1896 | + def old(self):
|
---|
1897 | + pass
|
---|
1898 | + class Renamed(Deprecated):
|
---|
1899 | + def new(self):
|
---|
1900 | + super(Renamed, self).new()
|
---|
1901 | + warnings.simplefilter('always')
|
---|
1902 | + renamed = Renamed()
|
---|
1903 | + renamed.new()
|
---|
1904 | + self.assertEqual(len(recorded), 1)
|
---|
1905 | + msg = str(recorded.pop().message)
|
---|
1906 | + self.assertEqual(msg,
|
---|
1907 | + '`Deprecated.old` is deprecated, use `new` instead.')
|
---|
1908 | + recorded[:] = []
|
---|
1909 | + renamed.old()
|
---|
1910 | + self.assertEqual(len(recorded), 2)
|
---|
1911 | + msgs = [str(warning.message) for warning in recorded]
|
---|
1912 | + self.assertEqual(msgs, [
|
---|
1913 | + '`Renamed.old` is deprecated, use `new` instead.',
|
---|
1914 | + '`Deprecated.old` is deprecated, use `new` instead.',
|
---|
1915 | + ])
|
---|
1916 | +
|
---|
1917 | + def test_deprecated_subclass_renamed_and_mixins(self):
|
---|
1918 | + """
|
---|
1919 | + Ensure the correct warnings are raised when a subclass inherit from a
|
---|
1920 | + class that renamed `old` and mixins that may or may not have renamed
|
---|
1921 | + `new`.
|
---|
1922 | + """
|
---|
1923 | + with warnings.catch_warnings(record=True) as recorded:
|
---|
1924 | + warnings.simplefilter('ignore')
|
---|
1925 | + class Renamed(six.with_metaclass(RenameManagerMethods)):
|
---|
1926 | + def new(self):
|
---|
1927 | + pass
|
---|
1928 | + class RenamedMixin(object):
|
---|
1929 | + def new(self):
|
---|
1930 | + super(RenamedMixin, self).new()
|
---|
1931 | + class DeprecatedMixin(object):
|
---|
1932 | + def old(self):
|
---|
1933 | + super(DeprecatedMixin, self).old()
|
---|
1934 | + class Deprecated(DeprecatedMixin, RenamedMixin, Renamed):
|
---|
1935 | + pass
|
---|
1936 | + warnings.simplefilter('always')
|
---|
1937 | + deprecated = Deprecated()
|
---|
1938 | + deprecated.new()
|
---|
1939 | + self.assertEqual(len(recorded), 2)
|
---|
1940 | + msgs = [str(warning.message) for warning in recorded]
|
---|
1941 | + self.assertEqual(msgs, [
|
---|
1942 | + '`DeprecatedMixin.old` is deprecated, use `new` instead.',
|
---|
1943 | + '`RenamedMixin.old` is deprecated, use `new` instead.',
|
---|
1944 | + ])
|
---|
1945 | + recorded[:] = []
|
---|
1946 | + deprecated.old()
|
---|
1947 | + self.assertEqual(len(recorded), 2)
|
---|
1948 | + msgs = [str(warning.message) for warning in recorded]
|
---|
1949 | + self.assertEqual(msgs, [
|
---|
1950 | + '`DeprecatedMixin.old` is deprecated, use `new` instead.',
|
---|
1951 | + '`RenamedMixin.old` is deprecated, use `new` instead.',
|
---|
1952 | + ])
|
---|
1953 | diff --git a/tests/fixtures/models.py b/tests/fixtures/models.py
|
---|
1954 | index 8bd3501..976716f 100644
|
---|
1955 | --- a/tests/fixtures/models.py
|
---|
1956 | +++ b/tests/fixtures/models.py
|
---|
1957 | @@ -78,8 +78,8 @@ class Person(models.Model):
|
---|
1958 | return (self.name,)
|
---|
1959 |
|
---|
1960 | class SpyManager(PersonManager):
|
---|
1961 | - def get_query_set(self):
|
---|
1962 | - return super(SpyManager, self).get_query_set().filter(cover_blown=False)
|
---|
1963 | + def get_queryset(self):
|
---|
1964 | + return super(SpyManager, self).get_queryset().filter(cover_blown=False)
|
---|
1965 |
|
---|
1966 | class Spy(Person):
|
---|
1967 | objects = SpyManager()
|
---|
1968 | diff --git a/tests/generic_relations/models.py b/tests/generic_relations/models.py
|
---|
1969 | index 18d7623..34dc8d3 100644
|
---|
1970 | --- a/tests/generic_relations/models.py
|
---|
1971 | +++ b/tests/generic_relations/models.py
|
---|
1972 | @@ -88,8 +88,8 @@ class Mineral(models.Model):
|
---|
1973 | return self.name
|
---|
1974 |
|
---|
1975 | class GeckoManager(models.Manager):
|
---|
1976 | - def get_query_set(self):
|
---|
1977 | - return super(GeckoManager, self).get_query_set().filter(has_tail=True)
|
---|
1978 | + def get_queryset(self):
|
---|
1979 | + return super(GeckoManager, self).get_queryset().filter(has_tail=True)
|
---|
1980 |
|
---|
1981 | class Gecko(models.Model):
|
---|
1982 | has_tail = models.BooleanField()
|
---|
1983 | diff --git a/tests/get_object_or_404/models.py b/tests/get_object_or_404/models.py
|
---|
1984 | index bda0605..bb9aa60 100644
|
---|
1985 | --- a/tests/get_object_or_404/models.py
|
---|
1986 | +++ b/tests/get_object_or_404/models.py
|
---|
1987 | @@ -22,8 +22,8 @@ class Author(models.Model):
|
---|
1988 | return self.name
|
---|
1989 |
|
---|
1990 | class ArticleManager(models.Manager):
|
---|
1991 | - def get_query_set(self):
|
---|
1992 | - return super(ArticleManager, self).get_query_set().filter(authors__name__icontains='sir')
|
---|
1993 | + def get_queryset(self):
|
---|
1994 | + return super(ArticleManager, self).get_queryset().filter(authors__name__icontains='sir')
|
---|
1995 |
|
---|
1996 | @python_2_unicode_compatible
|
---|
1997 | class Article(models.Model):
|
---|
1998 | diff --git a/tests/managers_regress/models.py b/tests/managers_regress/models.py
|
---|
1999 | index d72970d..d8dd22e 100644
|
---|
2000 | --- a/tests/managers_regress/models.py
|
---|
2001 | +++ b/tests/managers_regress/models.py
|
---|
2002 | @@ -7,18 +7,18 @@ from django.utils.encoding import python_2_unicode_compatible
|
---|
2003 |
|
---|
2004 |
|
---|
2005 | class OnlyFred(models.Manager):
|
---|
2006 | - def get_query_set(self):
|
---|
2007 | - return super(OnlyFred, self).get_query_set().filter(name='fred')
|
---|
2008 | + def get_queryset(self):
|
---|
2009 | + return super(OnlyFred, self).get_queryset().filter(name='fred')
|
---|
2010 |
|
---|
2011 |
|
---|
2012 | class OnlyBarney(models.Manager):
|
---|
2013 | - def get_query_set(self):
|
---|
2014 | - return super(OnlyBarney, self).get_query_set().filter(name='barney')
|
---|
2015 | + def get_queryset(self):
|
---|
2016 | + return super(OnlyBarney, self).get_queryset().filter(name='barney')
|
---|
2017 |
|
---|
2018 |
|
---|
2019 | class Value42(models.Manager):
|
---|
2020 | - def get_query_set(self):
|
---|
2021 | - return super(Value42, self).get_query_set().filter(value=42)
|
---|
2022 | + def get_queryset(self):
|
---|
2023 | + return super(Value42, self).get_queryset().filter(value=42)
|
---|
2024 |
|
---|
2025 |
|
---|
2026 | class AbstractBase1(models.Model):
|
---|
2027 | diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py
|
---|
2028 | index b0a1812..2f3eddd 100644
|
---|
2029 | --- a/tests/modeladmin/tests.py
|
---|
2030 | +++ b/tests/modeladmin/tests.py
|
---|
2031 | @@ -1074,7 +1074,7 @@ class ValidationTests(unittest.TestCase):
|
---|
2032 | return 'awesomeness'
|
---|
2033 | def get_choices(self, request):
|
---|
2034 | return (('bit', 'A bit awesome'), ('very', 'Very awesome'), )
|
---|
2035 | - def get_query_set(self, cl, qs):
|
---|
2036 | + def get_queryset(self, cl, qs):
|
---|
2037 | return qs
|
---|
2038 |
|
---|
2039 | class ValidationTestModelAdmin(ModelAdmin):
|
---|
2040 | diff --git a/tests/prefetch_related/models.py b/tests/prefetch_related/models.py
|
---|
2041 | index e58997d..81c5698 100644
|
---|
2042 | --- a/tests/prefetch_related/models.py
|
---|
2043 | +++ b/tests/prefetch_related/models.py
|
---|
2044 | @@ -87,8 +87,8 @@ class Qualification(models.Model):
|
---|
2045 |
|
---|
2046 |
|
---|
2047 | class TeacherManager(models.Manager):
|
---|
2048 | - def get_query_set(self):
|
---|
2049 | - return super(TeacherManager, self).get_query_set().prefetch_related('qualifications')
|
---|
2050 | + def get_queryset(self):
|
---|
2051 | + return super(TeacherManager, self).get_queryset().prefetch_related('qualifications')
|
---|
2052 |
|
---|
2053 |
|
---|
2054 | @python_2_unicode_compatible
|
---|
2055 | diff --git a/tests/proxy_models/models.py b/tests/proxy_models/models.py
|
---|
2056 | index 6c962aa..ffb3665 100644
|
---|
2057 | --- a/tests/proxy_models/models.py
|
---|
2058 | +++ b/tests/proxy_models/models.py
|
---|
2059 | @@ -10,12 +10,12 @@ from django.utils.encoding import python_2_unicode_compatible
|
---|
2060 | # A couple of managers for testing managing overriding in proxy model cases.
|
---|
2061 |
|
---|
2062 | class PersonManager(models.Manager):
|
---|
2063 | - def get_query_set(self):
|
---|
2064 | - return super(PersonManager, self).get_query_set().exclude(name="fred")
|
---|
2065 | + def get_queryset(self):
|
---|
2066 | + return super(PersonManager, self).get_queryset().exclude(name="fred")
|
---|
2067 |
|
---|
2068 | class SubManager(models.Manager):
|
---|
2069 | - def get_query_set(self):
|
---|
2070 | - return super(SubManager, self).get_query_set().exclude(name="wilma")
|
---|
2071 | + def get_queryset(self):
|
---|
2072 | + return super(SubManager, self).get_queryset().exclude(name="wilma")
|
---|
2073 |
|
---|
2074 | @python_2_unicode_compatible
|
---|
2075 | class Person(models.Model):
|
---|
2076 | diff --git a/tests/queries/models.py b/tests/queries/models.py
|
---|
2077 | index 28c8585..c025308 100644
|
---|
2078 | --- a/tests/queries/models.py
|
---|
2079 | +++ b/tests/queries/models.py
|
---|
2080 | @@ -176,8 +176,8 @@ class LoopZ(models.Model):
|
---|
2081 |
|
---|
2082 | # A model and custom default manager combination.
|
---|
2083 | class CustomManager(models.Manager):
|
---|
2084 | - def get_query_set(self):
|
---|
2085 | - qs = super(CustomManager, self).get_query_set()
|
---|
2086 | + def get_queryset(self):
|
---|
2087 | + qs = super(CustomManager, self).get_queryset()
|
---|
2088 | return qs.filter(public=True, tag__name='t1')
|
---|
2089 |
|
---|
2090 | @python_2_unicode_compatible
|
---|
2091 | @@ -197,8 +197,8 @@ class Detail(models.Model):
|
---|
2092 | data = models.CharField(max_length=10)
|
---|
2093 |
|
---|
2094 | class MemberManager(models.Manager):
|
---|
2095 | - def get_query_set(self):
|
---|
2096 | - return super(MemberManager, self).get_query_set().select_related("details")
|
---|
2097 | + def get_queryset(self):
|
---|
2098 | + return super(MemberManager, self).get_queryset().select_related("details")
|
---|
2099 |
|
---|
2100 | class Member(models.Model):
|
---|
2101 | name = models.CharField(max_length=10)
|
---|
2102 | diff --git a/tests/reverse_single_related/models.py b/tests/reverse_single_related/models.py
|
---|
2103 | index 898be84..30ba345 100644
|
---|
2104 | --- a/tests/reverse_single_related/models.py
|
---|
2105 | +++ b/tests/reverse_single_related/models.py
|
---|
2106 | @@ -2,8 +2,8 @@ from django.db import models
|
---|
2107 |
|
---|
2108 |
|
---|
2109 | class SourceManager(models.Manager):
|
---|
2110 | - def get_query_set(self):
|
---|
2111 | - return super(SourceManager, self).get_query_set().filter(is_public=True)
|
---|
2112 | + def get_queryset(self):
|
---|
2113 | + return super(SourceManager, self).get_queryset().filter(is_public=True)
|
---|
2114 |
|
---|
2115 | class Source(models.Model):
|
---|
2116 | is_public = models.BooleanField()
|
---|