Index: django/contrib/admin/models.py
===================================================================
--- django/contrib/admin/models.py	(revision 6783)
+++ django/contrib/admin/models.py	(working copy)
@@ -11,7 +11,14 @@
 
 class LogEntryManager(models.Manager):
     def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
-        e = self.model(None, None, user_id, content_type_id, smart_unicode(object_id), object_repr[:200], action_flag, change_message)
+        deletion = action_flag == DELETION
+
+        if deletion:
+            for log in self.filter(object_id__exact=object_id):
+                log.object_exists = False
+                log.save()
+
+        e = self.model(None, None, user_id, content_type_id, smart_unicode(object_id), not deletion, object_repr[:200], action_flag, change_message)
         e.save()
 
 class LogEntry(models.Model):
@@ -19,6 +26,7 @@
     user = models.ForeignKey(User)
     content_type = models.ForeignKey(ContentType, blank=True, null=True)
     object_id = models.TextField(_('object id'), blank=True, null=True)
+    object_exists = models.BooleanField(_('object exists'))
     object_repr = models.CharField(_('object repr'), max_length=200)
     action_flag = models.PositiveSmallIntegerField(_('action flag'))
     change_message = models.TextField(_('change message'), blank=True)
@@ -49,5 +57,10 @@
         """
         Returns the admin URL to edit the object represented by this log entry.
         This is relative to the Django admin index page.
+        Returns None if the object has been deleted.
         """
-        return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, self.object_id))
+        if self.object_exists:
+            return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, self.object_id))
+        else:
+            return None
+
Index: django/contrib/admin/templates/admin/index.html
===================================================================
--- django/contrib/admin/templates/admin/index.html	(revision 6783)
+++ django/contrib/admin/templates/admin/index.html	(working copy)
@@ -58,7 +58,7 @@
             {% else %}
             <ul class="actionlist">
             {% for entry in admin_log %}
-            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span></li>
+            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if entry.object_exists %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span></li>
             {% endfor %}
             </ul>
             {% endif %}
