diff --git a/scrapy/newitem/fields.py b/scrapy/newitem/fields.py index 6e123e2c8..a5e34a31b 100644 --- a/scrapy/newitem/fields.py +++ b/scrapy/newitem/fields.py @@ -19,13 +19,13 @@ class BaseField(object): class ListField(BaseField): - def __init__(self, field_type, default=None): - self._field = field_type() + def __init__(self, field, default=None): + self.field = field super(ListField, self).__init__(default) def to_python(self, value): if hasattr(value, '__iter__'): - return [self._field.to_python(v) for v in value] + return [self.field.to_python(v) for v in value] else: raise TypeError("Cannot instatiante %s with %s" \ % (self.__class__.__name__, type(value).__name__)) diff --git a/scrapy/tests/test_itemadaptor.py b/scrapy/tests/test_itemadaptor.py index ee829625a..c64e3f2d9 100644 --- a/scrapy/tests/test_itemadaptor.py +++ b/scrapy/tests/test_itemadaptor.py @@ -30,7 +30,7 @@ class InheritDefaultAdaptor(DefaultedAdaptor): class ListFieldTestItem(Item): - names = fields.ListField(fields.TextField) + names = fields.ListField(fields.TextField()) class ListFieldItemAdaptor(ItemAdaptor): diff --git a/scrapy/tests/test_newitem.py b/scrapy/tests/test_newitem.py index b75389ed8..fb6fc5926 100644 --- a/scrapy/tests/test_newitem.py +++ b/scrapy/tests/test_newitem.py @@ -37,10 +37,10 @@ class NewItemTest(unittest.TestCase): self.assertRaises(TypeError, TestItem, name=set()) - def test_multi(self): + def test_list(self): class TestListItem(Item): name = fields.TextField() - names = fields.ListField(fields.TextField) + names = fields.ListField(fields.TextField()) i = TestListItem() i['name'] = u'name' @@ -337,7 +337,7 @@ class NewItemFieldsTest(unittest.TestCase): self.assertEqual(field.from_unicode_list([]), u'') self.assertEqual(field.from_unicode_list([u'hello', u'world']), u'hello world') - field = fields.ListField(fields.TextField) + field = fields.ListField(fields.TextField()) self.assertEqual(field.from_unicode_list([]), []) self.assertEqual(field.from_unicode_list([u'hello', u'world']), [u'hello', u'world'])