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() |
---|