Skip to content

Commit f33a09d

Browse files
committed
Add size and max_size check
1 parent da8a556 commit f33a09d

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

django_mongodb_backend/fields/array.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ def __init__(self, base_field, max_size=None, size=None, **kwargs):
3131
self.base_field = base_field
3232
self.max_size = max_size
3333
self.size = size
34-
if size and max_size:
35-
raise ValueError("Cannot define both, size and max_size")
3634
if self.max_size:
3735
self.default_validators = [
3836
*self.default_validators,
@@ -106,6 +104,14 @@ def check(self, **kwargs):
106104
id="django_mongodb_backend.array.W004",
107105
)
108106
)
107+
if self.size and self.max_size:
108+
errors.append(
109+
checks.Error(
110+
"ArrayField cannot specify both size and max_size.",
111+
obj=self,
112+
id="django_mongodb_backend.array.E003",
113+
)
114+
)
109115
return errors
110116

111117
def set_attributes_from_name(self, name):

tests/model_fields_/test_arrayfield.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,15 @@ class MyModel(models.Model):
646646
self.assertEqual(len(errors), 1)
647647
self.assertEqual(errors[0].id, "django_mongodb_backend.array.E002")
648648

649+
def test_invalid_parameters(self):
650+
class MyModel(models.Model):
651+
field = ArrayField(models.CharField(max_length=3), size=3, max_size=4)
652+
653+
model = MyModel()
654+
errors = model.check()
655+
self.assertEqual(len(errors), 1)
656+
self.assertEqual(errors[0].id, "django_mongodb_backend.array.E003")
657+
649658
def test_invalid_default(self):
650659
class MyModel(models.Model):
651660
field = ArrayField(models.IntegerField(), default=[])

0 commit comments

Comments
 (0)