from django.contrib.admin.models import LogEntry, DELETION
from django.utils.html import escape
from django.core.urlresolvers import reverse
class LogEntryAdmin(admin.ModelAdmin):
date_hierarchy = 'action_time'
readonly_fields = LogEntry._meta.get_all_field_names()
list_filter = [
'user',
'content_type',
'action_flag'
]
search_fields = [
'object_repr',
'change_message'
]
list_display = [
'action_time',
'user',
'content_type',
'object_link',
'action_flag',
'change_message',
]
def has_add_permission(self, request):
return False
def has_change_permission(self, request, obj=None):
return request.user.is_superuser and request.method != 'POST'
def has_delete_permission(self, request, obj=None):
return False
def object_link(self, obj):
if obj.action_flag == DELETION:
link = escape(obj.object_repr)
else:
ct = obj.content_type
link = u'<a href="%s">%s</a>' % (
reverse('admin:%s_%s_change' % (ct.app_label, ct.model), args=[obj.object_id]),
escape(obj.object_repr),
)
return link
object_link.allow_tags = True
object_link.admin_order_field = 'object_repr'
object_link.short_description = u'object'
admin.site.register(LogEntry, LogEntryAdmin)
Comments
Useful snippet! Thanks I think some small things are needed:
in imports from django.core.urlresolvers import reverse
change : object_link_field.allow_tags = True object_link_field.admin_order_field = 'object_repr' object_link_field.short_description = u'object'
to object_link.allow_tags = True object_link.admin_order_field = 'object_repr' object_link.short_description = u'object'
#
Thanks for pointing out the errors. It was copied from my project and I made some last changes introducing the errors here in the form. I've updated the snippet so it should work out of the box now.
#