mirror of https://github.com/scrapy/scrapy.git
added MultiValuedField to newitem
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40981
This commit is contained in:
parent
2f75c2c93e
commit
ec1a6af04a
|
|
@ -3,7 +3,7 @@ import decimal
|
|||
import re
|
||||
|
||||
|
||||
__all__ = ['BooleanField', 'DateField', 'DecimalField',
|
||||
__all__ = ['MultiValuedField', 'BooleanField', 'DateField', 'DecimalField',
|
||||
'FloatField', 'IntegerField', 'StringField']
|
||||
|
||||
|
||||
|
|
@ -34,6 +34,21 @@ class Field(object):
|
|||
return ' '.join(value)
|
||||
|
||||
|
||||
class MultiValuedField(Field):
|
||||
def __init__(self, field_type, required=False, default=None):
|
||||
self._field = field_type()
|
||||
super(MultiValuedField, self).__init__(required, default)
|
||||
|
||||
def to_python(self, value):
|
||||
if value is None:
|
||||
return []
|
||||
else:
|
||||
return [self._field.to_python(v) for v in value]
|
||||
|
||||
def deiter(self, value):
|
||||
return value
|
||||
|
||||
|
||||
class BooleanField(Field):
|
||||
def to_python(self, value):
|
||||
if value in (True, False): return value
|
||||
|
|
|
|||
|
|
@ -13,3 +13,12 @@ class NewItemTest(unittest.TestCase):
|
|||
i.name = 'name'
|
||||
assert i.name == 'name'
|
||||
|
||||
def test_multi(self):
|
||||
class TestMultiItem(Item):
|
||||
name = StringField()
|
||||
names = MultiValuedField(StringField)
|
||||
|
||||
i = TestMultiItem()
|
||||
i.name = 'name'
|
||||
i.names = ['name1', 'name2']
|
||||
assert i.names == ['name1', 'name2']
|
||||
|
|
|
|||
Loading…
Reference in New Issue