Index: django/contrib/admin/media/css/base.css
===================================================================
--- django/contrib/admin/media/css/base.css	(revision 14788)
+++ django/contrib/admin/media/css/base.css	(working copy)
@@ -496,7 +496,7 @@
     background: #ffc;
 }
 
-.errors input, .errors select {
+.errors input, .errors select, .errors textarea {
     border: 1px solid red;
 }
 
Index: django/contrib/admin/helpers.py
===================================================================
--- django/contrib/admin/helpers.py	(revision 14788)
+++ django/contrib/admin/helpers.py	(working copy)
@@ -127,6 +127,9 @@
         attrs = classes and {'class': u' '.join(classes)} or {}
         return self.field.label_tag(contents=contents, attrs=attrs)
 
+    def errors(self):
+        return mark_safe(self.field.errors.as_ul())
+
 class AdminReadonlyField(object):
     def __init__(self, form, field, is_first, model_admin=None):
         label = label_for_field(field, form._meta.model, model_admin)
Index: django/contrib/admin/templates/admin/includes/fieldset.html
===================================================================
--- django/contrib/admin/templates/admin/includes/fieldset.html	(revision 14788)
+++ django/contrib/admin/templates/admin/includes/fieldset.html	(working copy)
@@ -4,10 +4,11 @@
         <div class="description">{{ fieldset.description|safe }}</div>
     {% endif %}
     {% for line in fieldset %}
-        <div class="form-row{% if line.errors %} errors{% endif %}{% for field in line %} {{ field.field.name }}{% endfor %}">
-            {{ line.errors }}
+        <div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% for field in line %} {{ field.field.name }}{% endfor %}">
+            {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
             {% for field in line %}
-                <div{% if not line.fields|length_is:"1" %} class="field-box"{% endif %}>
+                <div{% if not line.fields|length_is:'1' %} class="field-box{% if not field.is_readonly and field.errors %} errors{% endif %}"{% endif %}>
+                    {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
                     {% if field.is_checkbox %}
                         {{ field.field }}{{ field.label_tag }}
                     {% else %}
