Skip to content

Commit bce0a46

Browse files
committed
edits
1 parent 9501fb4 commit bce0a46

File tree

4 files changed

+18
-17
lines changed

4 files changed

+18
-17
lines changed

django_mongodb_backend/fields/embedded_model_array.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
class EmbeddedModelArrayField(ArrayField):
99
def __init__(self, embedded_model, **kwargs):
10-
if kwargs.get("size") is not None:
10+
if "size" in kwargs:
1111
raise ValueError("EmbeddedModelArrayField does not support size.")
1212
super().__init__(EmbeddedModelField(embedded_model), **kwargs)
1313
self.embedded_model = embedded_model
@@ -33,7 +33,7 @@ def get_db_prep_value(self, value, connection, prepared=False):
3333

3434
def formfield(self, **kwargs):
3535
# Skip ArrayField.formfield() which has some differeences, including
36-
# unneeded "base_field" and "max_length" instea d of "max_num".
36+
# unneeded "base_field" and "max_length" instead of "max_num".
3737
return Field.formfield(
3838
self,
3939
**{

django_mongodb_backend/forms/fields/embedded_model_array.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,8 @@
55
from django.utils.html import format_html, format_html_join
66

77

8-
def models_to_dicts(models):
9-
"""
10-
Convert initial data (which is a list of model instances or None) to a
11-
list of dictionary data suitable for a formset.
12-
"""
13-
return [model_to_dict(model) for model in models or []]
14-
15-
168
class EmbeddedModelArrayField(forms.Field):
17-
def __init__(self, model, prefix, max_num=None, extra_forms=3, **kwargs):
9+
def __init__(self, model, *, prefix, max_num=None, extra_forms=3, **kwargs):
1810
self.model = model
1911
self.prefix = prefix
2012
self.formset = formset_factory(
@@ -35,10 +27,10 @@ def clean(self, value):
3527
raise ValidationError(formset.errors + formset.non_form_errors())
3628
cleaned_data = []
3729
for data in formset.cleaned_data:
38-
# The fallback to True skips empty forms.
39-
if data.get("DELETE", True):
30+
# The "delete" checkbox isn't part of model data and must be
31+
# removed. The fallback to True skips empty forms.
32+
if data.pop("DELETE", True):
4033
continue
41-
data.pop("DELETE") # The "delete" checkbox isn't part of model data.
4234
cleaned_data.append(self.model(**data))
4335
return cleaned_data
4436

@@ -74,3 +66,11 @@ class EmbeddedModelArrayWidget(forms.Widget):
7466

7567
def value_from_datadict(self, data, files, name):
7668
return {key: data[key] for key in data if key.startswith(f"{name}-")}
69+
70+
71+
def models_to_dicts(models):
72+
"""
73+
Convert initial data (which is a list of model instances or None) to a
74+
list of dictionary data suitable for a formset.
75+
"""
76+
return [model_to_dict(model) for model in models or []]

docs/source/ref/forms.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ Some MongoDB-specific fields are available in ``django_mongodb_backend.forms``.
2626
``EmbeddedModelArrayField``
2727
---------------------------
2828

29-
.. class:: EmbeddedModelArrayField(model, prefix, max_num=None, extra_forms=3, **kwargs)
29+
.. class:: EmbeddedModelArrayField(model, *, prefix, max_num=None, extra_forms=3, **kwargs)
3030

3131
.. versionadded:: 5.2.0b1
3232

3333
A field which maps to a model. The field will render as a
34-
:class:`~django.forms.ModelFormSet`.
34+
:class:`ModelFormSet<django.forms.models.BaseModelFormSet>`.
3535

3636
.. attribute:: model
3737

docs/source/topics/embedded-models.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
Embedded models
22
===============
33

4-
Use :class:`~django_mongodb_backend.fields.EmbeddedModelField` to structure
4+
Use :class:`~django_mongodb_backend.fields.EmbeddedModelField` and
5+
:class:`~django_mongodb_backend.fields.EmbeddedModelArrayField` to structure
56
your data using `embedded documents
67
<https://www.mongodb.com/docs/manual/data-modeling/#embedded-data>`_.
78

0 commit comments

Comments
 (0)