Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Modified the implementation of get_object() to be consistent with the…

… approach used elsewhere in the API. Also added documentation for get_object() which seems to have been accidentally omitted.

This is a BACKWARDS-INCOMPATIBLE CHANGE for anyone depending on the API for get_object() that was introduced (but not documented) in r14254.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit a014ee02888d2fcea6880bef51f143632a60aab3 1 parent 46c1765
@freakboy3742 freakboy3742 authored
4 django/views/generic/
@@ -443,7 +443,7 @@ class BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailV
Detail view of a single object on a single date; this differs from the
standard DetailView by accepting a year/month/day in the URL.
- def get_object(self, queryset=None, **kwargs):
+ def get_object(self, queryset=None):
Get the object this request displays.
@@ -469,7 +469,7 @@ def get_object(self, queryset=None, **kwargs):
lookup = _date_lookup_for_field(field, date)
qs = qs.filter(**lookup)
- return super(BaseDetailView, self).get_object(queryset=qs, **kwargs)
+ return super(BaseDetailView, self).get_object(queryset=qs)
6 django/views/generic/
@@ -14,7 +14,7 @@ class SingleObjectMixin(object):
slug_field = 'slug'
context_object_name = None
- def get_object(self, pk=None, slug=None, queryset=None, **kwargs):
+ def get_object(self, queryset=None):
Returns the object the view is displaying.
@@ -27,6 +27,8 @@ def get_object(self, pk=None, slug=None, queryset=None, **kwargs):
queryset = self.get_queryset()
# Next, try looking up by primary key.
+ pk = self.kwargs.get('pk', None)
+ slug = self.kwargs.get('slug', None)
if pk is not None:
queryset = queryset.filter(pk=pk)
@@ -92,7 +94,7 @@ def get_context_data(self, **kwargs):
class BaseDetailView(SingleObjectMixin, View):
def get(self, request, **kwargs):
- self.object = self.get_object(**kwargs)
+ self.object = self.get_object()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
10 django/views/generic/
@@ -2,8 +2,8 @@
from django.core.exceptions import ImproperlyConfigured
from django.http import HttpResponseRedirect
from django.views.generic.base import TemplateResponseMixin, View
-from django.views.generic.detail import (SingleObjectMixin,
- SingleObjectTemplateResponseMixin, BaseDetailView)
+from django.views.generic.detail import (SingleObjectMixin,
+ SingleObjectTemplateResponseMixin, BaseDetailView)
class FormMixin(object):
@@ -191,11 +191,11 @@ class BaseUpdateView(ModelFormMixin, ProcessFormView):
Using this base class requires subclassing to provide a response mixin.
def get(self, request, *args, **kwargs):
- self.object = self.get_object(**kwargs)
+ self.object = self.get_object()
return super(BaseUpdateView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
- self.object = self.get_object(**kwargs)
+ self.object = self.get_object()
return super(BaseUpdateView, self).post(request, *args, **kwargs)
# PUT is a valid HTTP verb for creating (with a known URL) or editing an
@@ -218,7 +218,7 @@ class DeletionMixin(object):
success_url = None
def delete(self, request, *args, **kwargs):
- self.object = self.get_object(**kwargs)
+ self.object = self.get_object()
return HttpResponseRedirect(self.get_success_url())
17 docs/ref/class-based-views.txt
@@ -158,6 +158,19 @@ SingleObjectMixin
Designates the name of the variable to use in the context.
+ .. method:: get_object(queryset=None)
+ Returns the single object that this view will display. If
+ ``queryset`` is provided, that queryset will be used as the
+ source of objects; otherwise,
+ :meth:`~SingleObjectMixin.get_queryset` will be used.
+ :meth:`~SingleObjectMixin.get_object` looks for a ``pk``
+ argument in the arguments to the view; if ``pk`` is found,
+ this method performs a primary-key based lookup using that
+ value. If no ``pk`` argument is found, it looks for a ``slug``
+ argument, and performs a slug lookup using the
+ :attr:`SingleObjectMixin.slug_field`.
.. method:: get_queryset()
Returns the queryset that will be used to retrieve the object that
@@ -311,7 +324,7 @@ MultipleObjectMixin
objects from that page.
.. method:: get_paginate_by(queryset)
Returns the number of items to paginate by, or ``None`` for no
pagination. By default this simply returns the value of
@@ -506,7 +519,7 @@ ProcessFormView
A mixin that provides basic HTTP GET and POST workflow.
.. method:: get(request, *args, **kwargs)
Constructs a form, then renders a response using a context that
contains that form.
4 docs/topics/class-based-views.txt
@@ -440,9 +440,9 @@ object, so we simply override it and wrap the call::
queryset = Author.objects.all()
- def get_object(self, **kwargs):
+ def get_object(self):
# Call the superclass
- object = super(AuthorDetailView, self).get_object(**kwargs)
+ object = super(AuthorDetailView, self).get_object()
# Record the lass accessed date
object.last_accessed =
Please sign in to comment.
Something went wrong with that request. Please try again.