I consider this to be a bug, because it means that the following use case
doesn't work, which is how I came across it:
{{{
class MyModelAdmin(ModelAdmin):
def log_deletion(self, request, object, object_repr):
super(MyModelAdmin, self).log_deletion(request, object,
object_repr)
super(MyModelAdmin, self).log_deletion(request,
object.content_object, object_repr)
}}}
where `object.content_object` is a GFK back to the "owner" of the object.
Instead of getting two deletion messages, to the instance and the
GFK/parent, you end up with two for the instance, because the content_type
of the GFK/parent is never used.
The equivalent code for the `log_addition` and `log_change` methods
appears to work.
--
Ticket URL: <https://code.djangoproject.com/ticket/21771>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* stage: Unreviewed => Accepted
* needs_tests: => 0
* needs_docs: => 0
Comment:
Hi,
From what I can tell, this is a remnant of a limitation that existed when
the feature was introduced (6ba64896622213ce44ace2c605e4eaafed1e9fc5).
According to the original docstring, `log_deletion` used to be called
**after** the object had been deleted and I'm guessing that's why
`self.model` was used instead of `object`.
However, according to the current docstring, `log_deletion` is now called
**before** deletion so it should be safe to used `object` here was well.
--
Ticket URL: <https://code.djangoproject.com/ticket/21771#comment:1>
Comment (by alasdair):
Pull request https://github.com/django/django/pull/2251
--
Ticket URL: <https://code.djangoproject.com/ticket/21771#comment:2>
* status: new => closed
* resolution: => fixed
Comment:
PR pushed in [1b29d3289473a6c3ce565c0ddc1bed4d5b5ac9a3]
--
Ticket URL: <https://code.djangoproject.com/ticket/21771#comment:3>