xlogging.py:

from django.contrib.contenttypes.models import ContentType
from django.utils.encoding import force_unicode

VIEW = 4

def log_view(request, object):
    """    Log that an object is being viewed by the user.
    """
    from django.contrib.admin.models import LogEntry
    LogEntry.objects.log_action(
        user_id         = request.user.pk,
        content_type_id = ContentType.objects.get_for_model(object).pk,
        object_id       = object.pk,
        object_repr     = force_unicode(object),
        action_flag     = VIEW,
        change_message  = "Accessed object %s in %s." % (force_unicode(object), ContentType.objects.get_for_model(object))
    )

admin.py

from some.application.module.xlogging import log_view

class SomeAdmin(admin.ModelAdmin):
    def change_view(self, request, object_id, extra_context=None):
        object = self.queryset(request).get(pk=unquote(object_id))
        log_view(request, object)
        return super(SomeAdmin, self).change_view(request, object_id, extra_context)