Skip to content

Commit 14047e5

Browse files
committed
size arg not supported
1 parent b74b285 commit 14047e5

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

django_mongodb_backend/fields/embedded_model_array.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
class EmbeddedModelArrayField(ArrayField):
99
def __init__(self, embedded_model, **kwargs):
10+
if kwargs.get("size") is not None:
11+
raise ValueError("EmbeddedModelArrayField does not support size.")
1012
super().__init__(EmbeddedModelField(embedded_model), **kwargs)
1113
self.embedded_model = embedded_model
1214

@@ -42,7 +44,6 @@ def formfield(self, **kwargs):
4244
"model": self.base_field.embedded_model,
4345
"max_length": self.max_size,
4446
"prefix": self.name,
45-
"length": self.size,
4647
**kwargs,
4748
},
4849
)

django_mongodb_backend/forms/fields/embedded_model_array.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def models_to_dicts(models):
1414

1515

1616
class EmbeddedModelArrayField(forms.Field):
17-
def __init__(self, model, prefix, max_length=None, length=None, *args, **kwargs):
17+
def __init__(self, model, prefix, max_length=None, *args, **kwargs):
1818
self.model = model
1919
self.prefix = prefix
2020
self.formset = formset_factory(

docs/source/ref/models/fields.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ See :doc:`/topics/embedded-models` for more details and examples.
272272
``EmbeddedModelArrayField``
273273
---------------------------
274274

275-
.. class:: EmbeddedModelArrayField(embedded_model, **kwargs)
275+
.. class:: EmbeddedModelArrayField(embedded_model, max_size=None, **kwargs)
276276

277277
.. versionadded:: 5.2.0b1
278278

@@ -283,6 +283,13 @@ See :doc:`/topics/embedded-models` for more details and examples.
283283
This is a required argument, similar to
284284
:attr:`EmbeddedModelField.embedded_model`.
285285

286+
.. attribute:: max_size
287+
288+
This is an optional argument.
289+
290+
If passed, the array will have a maximum size as specified, validated
291+
by forms and model validation, but not enforced by the database.
292+
286293
``ObjectIdAutoField``
287294
---------------------
288295

tests/model_fields_/test_embedded_model_array.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ def test_deconstruct(self):
1717
self.assertEqual(args, [])
1818
self.assertEqual(kwargs, {"embedded_model": "Data", "null": True})
1919

20+
def test_size_not_supported(self):
21+
msg = "EmbeddedModelArrayField does not support size."
22+
with self.assertRaisesMessage(ValueError, msg):
23+
EmbeddedModelArrayField("Data", size=1)
24+
2025
def test_get_db_prep_save_invalid(self):
2126
msg = "Expected list of <class 'model_fields_.models.Review'> instances, not <class 'int'>."
2227
with self.assertRaisesMessage(TypeError, msg):

0 commit comments

Comments
 (0)