diff --git a/gen/__init__.py b/gen/__init__.py
index 02b954c..00a5eaa 100644
--- a/gen/__init__.py
+++ b/gen/__init__.py
@@ -2278,10 +2278,13 @@ class List(Type):
 
     def getStorableValue(self, value):
         '''Gets p_value in a form that can be stored in the database.'''
+        res = []
         for v in value:
+            sv = Object()
             for name, field in self.fields:
-                setattr(v, name, field.getStorableValue(getattr(v, name)))
-        return value
+                setattr(sv, name, field.getStorableValue(getattr(v, name)))
+            res.append(sv)
+        return res
 
     def getInnerValue(self, outerValue, name, i):
         '''Returns the value of inner field named p_name in row number p_i
diff --git a/gen/plone25/skin/widgets/list.pt b/gen/plone25/skin/widgets/list.pt
index 3b167ba..c8a7b94 100644
--- a/gen/plone25/skin/widgets/list.pt
+++ b/gen/plone25/skin/widgets/list.pt
@@ -23,9 +23,9 @@
        tal:condition="python: isEdit or value"
        tal:attributes="id python: 'list_%s' % name">