=== modified file 'django/newforms/widgets.py'
--- django/newforms/widgets.py	2007-02-18 01:05:41 +0000
+++ django/newforms/widgets.py	2007-03-24 01:40:31 +0000
@@ -317,16 +317,19 @@
         if not isinstance(value, list):
             value = self.decompress(value)
         output = []
+        has_id = attrs.get('id', False)
         for i, widget in enumerate(self.widgets):
             try:
                 widget_value = value[i]
-            except KeyError:
+            except IndexError:
                 widget_value = None
+            if has_id:
+                attrs = dict(attrs, id='%s_%s' % (has_id, i))    
             output.append(widget.render(name + '_%s' % i, widget_value, attrs))
         return self.format_output(output)
 
     def value_from_datadict(self, data, name):
-        return [data.get(name + '_%s' % i) for i in range(len(self.widgets))]
+        return [widget.value_from_datadict(data, name + '_%s' % i) for i, widget in enumerate(self.widgets)]
 
     def format_output(self, rendered_widgets):
         return u''.join(rendered_widgets)

