Index: newforms/util.py
===================================================================
--- newforms/util.py	(revision 20755)
+++ newforms/util.py	(working copy)
@@ -50,11 +50,12 @@
         return repr([force_unicode(e) for e in self])
 
 class ValidationError(Exception):
-    def __init__(self, message):
+    def __init__(self, message, field=None):
         """
         ValidationError can be passed any object that can be printed (usually
         a string) or a list of objects.
         """
+        self.field = field
         if isinstance(message, list):
             self.messages = ErrorList([smart_unicode(msg) for msg in message])
         else:
Index: newforms/forms.py
===================================================================
--- newforms/forms.py	(revision 20755)
+++ newforms/forms.py	(working copy)
@@ -198,7 +198,7 @@
         try:
             self.cleaned_data = self.clean()
         except ValidationError, e:
-            self._errors[NON_FIELD_ERRORS] = e.messages
+            self._errors[e.field or NON_FIELD_ERRORS] = e.messages
         if self._errors:
             delattr(self, 'cleaned_data')
 
