mirror of
https://github.com/Infinidat/infi.clickhouse_orm.git
synced 2025-02-19 18:00:32 +03:00
Add validation of array field's inner field
This commit is contained in:
parent
cec543eee7
commit
be1cbdee76
|
@ -363,6 +363,8 @@ class ArrayField(Field):
|
|||
class_default = []
|
||||
|
||||
def __init__(self, inner_field, default=None, alias=None, materialized=None, readonly=None):
|
||||
assert isinstance(inner_field, Field), "The first argument of ArrayField must be a Field instance"
|
||||
assert not isinstance(inner_field, ArrayField), "Multidimensional array fields are not supported by the ORM"
|
||||
self.inner_field = inner_field
|
||||
super(ArrayField, self).__init__(default, alias, materialized, readonly)
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class ArrayFieldsTest(unittest.TestCase):
|
|||
instance = ModelWithArrays(
|
||||
date_field='2016-08-30',
|
||||
arr_str=['goodbye,', 'cruel', 'world', 'special chars: ,"\\\'` \n\t\\[]'],
|
||||
arr_date=['2010-01-01']
|
||||
arr_date=['2010-01-01'],
|
||||
)
|
||||
self.database.insert([instance])
|
||||
query = 'SELECT * from $db.modelwitharrays ORDER BY date_field'
|
||||
|
@ -62,6 +62,11 @@ class ArrayFieldsTest(unittest.TestCase):
|
|||
with self.assertRaises(ValueError):
|
||||
parse_array(s)
|
||||
|
||||
def test_invalid_inner_field(self):
|
||||
for x in (DateField, None, "", ArrayField(Int32Field())):
|
||||
with self.assertRaises(AssertionError):
|
||||
ArrayField(x)
|
||||
|
||||
|
||||
class ModelWithArrays(Model):
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user