Skip to content

Commit d93ee38

Browse files
committed
edits
1 parent 6f75504 commit d93ee38

File tree

8 files changed

+225
-259
lines changed

8 files changed

+225
-259
lines changed

django_mongodb_backend/fields/embedded_model_array.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ def get_db_prep_value(self, value, connection, prepared=False):
3232
return value
3333

3434
def formfield(self, **kwargs):
35-
# Skip ArrayField.formfield() which has some differeences, including
36-
# unneeded "base_field" and "max_length" instead of "max_num".
35+
# Skip ArrayField.formfield() which has some differences, including
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: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ def has_changed(self, initial, data):
4040

4141
def get_bound_field(self, form, field_name):
4242
# Nested embedded model form fields need a double prefix.
43+
# HACK: Setting self.prefix_override makes it available in clean()
44+
# which doesn't have access to the form.
4345
self.prefix_override = f"{form.prefix}-{self.prefix}" if form.prefix else None
4446
return EmbeddedModelArrayBoundField(form, self, field_name, self.prefix_override)
4547

@@ -62,8 +64,8 @@ def __str__(self):
6264

6365
class EmbeddedModelArrayWidget(forms.Widget):
6466
"""
65-
This widget extracts the data for EmbeddedModelArrayFormField's formset.
66-
It is never rendered.
67+
Extract the data for EmbeddedModelArrayFormField's formset.
68+
This widget is never rendered.
6769
"""
6870

6971
def value_from_datadict(self, data, files, name):

docs/make.bat

100644100755
File mode changed.

docs/source/ref/models/fields.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ These indexes use 0-based indexing.
256256
class Book(models.Model):
257257
author = EmbeddedModelField(Author)
258258

259-
See :ref:`the embedded model topic guide <embeddedmodelfield-example>` for
260-
more details and examples.
259+
See :ref:`the embedded model topic guide <embedded-model-field-example>`
260+
for more details and examples.
261261

262262
.. admonition:: Migrations support is limited
263263

@@ -288,11 +288,11 @@ These indexes use 0-based indexing.
288288

289289
This is an optional argument.
290290

291-
If passed, the array will have a maximum size as specified, validated
291+
If passed, the list will have a maximum size as specified, validated
292292
by forms and model validation, but not enforced by the database.
293293

294-
See :ref:`the embedded model topic guide <embeddedmodelarrayfield-example>`
295-
for more details and examples.
294+
See :ref:`the embedded model topic guide
295+
<embedded-model-array-field-example>` for more details and examples.
296296

297297
.. admonition:: Migrations support is limited
298298

docs/source/releases/5.2.x.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ Django MongoDB Backend 5.2.x
1010
New features
1111
------------
1212

13-
- Added :class:`~.fields.EmbeddedModelArrayField` for storing data as an array
14-
of model instances.
13+
- Added :class:`~.fields.EmbeddedModelArrayField` for storing a list of model
14+
instances.
1515

1616
Bug fixes
1717
---------

docs/source/topics/embedded-models.rst

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Use :class:`~django_mongodb_backend.fields.EmbeddedModelField` and
66
your data using `embedded documents
77
<https://www.mongodb.com/docs/manual/data-modeling/#embedded-data>`_.
88

9-
.. _embeddedmodelfield-example:
9+
.. _embedded-model-field-example:
1010

1111
``EmbeddedModelField``
1212
----------------------
@@ -52,8 +52,6 @@ Represented in BSON, Bob's structure looks like this:
5252
...
5353
}
5454
55-
Unless explicitly set, embedded models don't have a primary key value.
56-
5755
Querying ``EmbeddedModelField``
5856
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5957

@@ -63,7 +61,7 @@ address with the city "New York"::
6361

6462
>>> Customer.objects.filter(address__city="New York")
6563

66-
.. _embeddedmodelarrayfield-example:
64+
.. _embedded-model-array-field-example:
6765

6866
``EmbeddedModelArrayField``
6967
---------------------------
@@ -108,5 +106,3 @@ Represented in BSON, Bob's structure looks like this:
108106
}],
109107
...
110108
}
111-
112-
Unless explicitly set, embedded models don't have a primary key value.

tests/model_fields_/test_embedded_model_array.py

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from django.core.exceptions import FieldError
21
from django.db import models
32
from django.test import SimpleTestCase, TestCase
43
from django.test.utils import isolate_apps
@@ -56,37 +55,6 @@ def test_save_load_null(self):
5655
self.assertIsNone(movie.reviews)
5756

5857

59-
class QueryingTests(TestCase):
60-
@classmethod
61-
def setUpTestData(cls):
62-
reviews = [
63-
Review(title="The best", rating=10),
64-
Review(title="Mediocre", rating=5),
65-
Review(title="Horrible", rating=1),
66-
]
67-
cls.clouds = Movie.objects.create(title="Clouds", reviews=reviews)
68-
reviews = [
69-
Review(title="Super", rating=9),
70-
Review(title="Meh", rating=5),
71-
Review(title="Horrible", rating=2),
72-
]
73-
cls.frozen = Movie.objects.create(title="Frozen", reviews=reviews)
74-
reviews = [
75-
Review(title="Excellent", rating=9),
76-
Review(title="Wow", rating=8),
77-
Review(title="Classic", rating=7),
78-
]
79-
cls.bears = Movie.objects.create(title="Bears", reviews=reviews)
80-
81-
def test_filter_with_field(self):
82-
msg = (
83-
"Unsupported lookup 'title' for EmbeddedModelArrayField or join "
84-
"on the field not permitted."
85-
)
86-
with self.assertRaisesMessage(FieldError, msg):
87-
Movie.objects.filter(reviews__title="Horrible")
88-
89-
9058
@isolate_apps("model_fields_")
9159
class CheckTests(SimpleTestCase):
9260
def test_no_relational_fields(self):

0 commit comments

Comments
 (0)