Commit a014ee02 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Modified the implementation of get_object() to be consistent with the approach...

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: http://code.djangoproject.com/svn/django/trunk@14292 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 46c17654
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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 @@ class BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailV
        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)



+4 −2
Original line number Diff line number Diff line
@@ -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 @@ class SingleObjectMixin(object):
            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 @@ class SingleObjectMixin(object):

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)

+5 −5
Original line number Diff line number Diff line
@@ -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()
        self.object.delete()
        return HttpResponseRedirect(self.get_success_url())

+15 −2
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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 = datetime.datetime.now()
            object.save()