Index: django/newforms/fields.py
===================================================================
--- django/newforms/fields.py	(revision 6137)
+++ django/newforms/fields.py	(working copy)
@@ -2,6 +2,7 @@
 Field classes
 """
 
+import copy
 import datetime
 import re
 import time
@@ -100,6 +101,12 @@
         """
         return {}
 
+    def __deepcopy__(self, memo):
+        result = copy.copy(self)
+        memo[id(self)] = result
+        result.widget = copy.deepcopy(self.widget, memo)
+        return result
+
 class CharField(Field):
     def __init__(self, max_length=None, min_length=None, *args, **kwargs):
         self.max_length, self.min_length = max_length, min_length
Index: django/newforms/forms.py
===================================================================
--- django/newforms/forms.py	(revision 6137)
+++ django/newforms/forms.py	(working copy)
@@ -31,7 +31,7 @@
         dict.__init__(self, dict(data))
 
     def copy(self):
-        return SortedDictFromList([(k, copy.copy(v)) for k, v in self.items()])
+        return SortedDictFromList([(k, copy.deepcopy(v)) for k, v in self.items()])
 
 class DeclarativeFieldsMetaclass(type):
     """
Index: tests/regressiontests/forms/tests.py
===================================================================
--- tests/regressiontests/forms/tests.py	(revision 6137)
+++ tests/regressiontests/forms/tests.py	(working copy)
@@ -2681,16 +2681,24 @@
 ...         super(Person, self).__init__(*args, **kwargs)
 ...         if names_required:
 ...             self.fields['first_name'].required = True
+...             self.fields['first_name'].widget.attrs['class'] = 'required'
 ...             self.fields['last_name'].required = True
+...             self.fields['last_name'].widget.attrs['class'] = 'required'
 >>> f = Person(names_required=False)
 >>> f['first_name'].field.required, f['last_name'].field.required
 (False, False)
+>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs
+({}, {})
 >>> f = Person(names_required=True)
 >>> f['first_name'].field.required, f['last_name'].field.required
 (True, True)
+>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs
+({'class': 'required'}, {'class': 'required'})
 >>> f = Person(names_required=False)
 >>> f['first_name'].field.required, f['last_name'].field.required
 (False, False)
+>>> f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs
+({}, {})
 >>> class Person(Form):
 ...     first_name = CharField(max_length=30)
 ...     last_name = CharField(max_length=30)
