11.. _django-limitations:
22
3- ============
4- Limitations
5- ============
3+ =================================
4+ Limitations and Upcoming Features
5+ =================================
66
77.. contents:: On this page
88 :local:
@@ -27,8 +27,28 @@ releases based on user demand. You can request support for a feature by leaving
2727a suggestion on the `Drivers Feedback Forum
2828<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.
2929
30+ You can also find a list of features that {+django-odm+}
31+ will likely support in upcoming releases.
32+
33+ Feature Limitations
34+ -------------------
35+
36+ In this section, you can learn about the following
37+ types of unsupported {+framework+} and MongoDB features:
38+
39+ - :ref:`django-limitations-database`
40+ - :ref:`django-limitations-models`
41+ - :ref:`django-limitations-query`
42+ - :ref:`django-limitations-management`
43+ - :ref:`django-limitations-migration`
44+ - :ref:`django-limitations-async`
45+ - :ref:`django-limitations-data`
46+ - :ref:`django-limitations-performance`
47+
48+ .. _django-limitations-database:
49+
3050Unsupported Database Variables
31- ------------------------------
51+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3252
3353The following database variables are not supported by {+django-odm+}:
3454
@@ -37,16 +57,18 @@ The following database variables are not supported by {+django-odm+}:
3757- ``CONN_HEALTH_CHECKS``
3858- ``TIME_ZONE``
3959
60+ .. _django-limitations-models:
61+
4062Model Limitations
41- -----------------
63+ ~~~~~~~~~~~~~~~~~
4264
4365The following limitations apply to models in {+django-odm+}:
4466
4567- {+django-odm+} enforces a one-to-one mapping between a Django model and a
4668 MongoDB collection. Because of this, multiple models cannot share the same collection.
4769
4870Indexes
49- ~~~~~~~
71+ ```````
5072
5173{+django-odm+} does not support the following index functionalities:
5274
@@ -59,8 +81,10 @@ To learn how to run unsupported database operations by operating directly on
5981your ``MongoClient`` instance, see :ref:`django-client-operations` in the
6082Perform Raw Database Queries guide.
6183
84+ .. _django-limitations-models-fields:
85+
6286Fields
63- ~~~~~~
87+ ``````
6488
6589{+django-odm+} has the following limitations on the specified field types:
6690
@@ -115,8 +139,10 @@ The following field types are unavailable in {+django-odm+}:
115139- ``BigAutoField``
116140- ``SmallAutoField``
117141
142+ .. _django-limitations-query:
143+
118144Querying Limitations
119- --------------------
145+ ~~~~~~~~~~~~~~~~~~~~
120146
121147{+django-odm+} does not support the following ``QuerySet`` API methods:
122148
@@ -130,14 +156,14 @@ Querying Limitations
130156that span multiple collections.
131157
132158Geospatial Queries
133- ~~~~~~~~~~~~~~~~~~
159+ ``````````````````
134160
135161- {+django-odm+} does not support ``GeoDjango``.
136162- {+django-odm+} does not have any Django lookup operators for MongoDB-specific
137163 geospatial queries.
138164
139165Aggregation Operators
140- ~~~~~~~~~~~~~~~~~~~~~
166+ `````````````````````
141167
142168{+django-odm+} does not contain any custom Django field lookups for the MongoDB
143169aggregation framework. Instead, use the ``raw_aggregate()`` method. For more
@@ -147,7 +173,7 @@ the :ref:`django-raw-queries` guide.
147173.. TODO: Link to aggregation
148174
149175Database Functions
150- ~~~~~~~~~~~~~~~~~~
176+ ``````````````````
151177
152178{+django-odm+} does not support the following database functions:
153179
@@ -166,8 +192,10 @@ Database Functions
166192The ``tzinfo`` parameter of the ``Trunc`` database functions doesn't work
167193properly because MongoDB converts the result back to UTC.
168194
195+ .. _django-limitations-management:
196+
169197Django Management Command Limitations
170- -------------------------------------
198+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
171199
172200{+django-odm+} does not support the following Django management commands:
173201
@@ -177,8 +205,10 @@ Django Management Command Limitations
177205- ``sqlflush``
178206- ``sqlsequencereset``
179207
208+ .. _django-limitations-migration:
209+
180210Migration Limitations
181- ---------------------
211+ ~~~~~~~~~~~~~~~~~~~~~
182212
183213- {+django-odm+} does not support enforced schema validation. To learn how to
184214 enforce schema validation in your application, see the :manual:`Specify JSON
@@ -188,24 +218,145 @@ Migration Limitations
188218 <{+django-docs+}/topics/migrations/#transactions>`__.
189219- {+django-odm+} does not support the ``migrate --fake-initial`` command.
190220
191- Asynchronous Support
192- --------------------
221+ .. _django-limitations-async:
222+
223+ Asynchronous Limitations
224+ ~~~~~~~~~~~~~~~~~~~~~~~~
193225
194226{+django-odm+} has not been tested for support of the asynchronous functionality of
195227the Django API.
196228
229+ .. _django-limitations-data:
230+
197231Data Types
198- ----------
232+ ~~~~~~~~~~
199233
200234{+django-odm+} does not have a custom ``Field`` class for the ``BSONRegExp``
201235data type. Instead, use the ``CharField`` class.
202236
237+ .. _django-limitations-performance:
238+
203239Performance
204- -----------
240+ ~~~~~~~~~~~
205241
206242The engineering team is prioritizing feature development for the Public Preview
207243release of {+django-odm+}. Because of this, you might notice performance
208244limitations with certain workloads. If you encounter any performance issues,
209245please report them as shown in the :ref:`Issues & Help <django-issues-and-help>`
210246guide. You can also share your feedback on the `Drivers Feedback Forum
211247<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.
248+
249+ Upcoming Features
250+ -----------------
251+
252+ In this section, you can learn about the following
253+ types of {+framework+} and MongoDB features that
254+ General Availability (GA) and post-GA {+django-odm+} releases
255+ will likely introduce:
256+
257+ - :ref:`django-upcoming-models`
258+ - :ref:`django-upcoming-database`
259+ - :ref:`django-upcoming-third-party`
260+ - :ref:`django-upcoming-management`
261+ - :ref:`django-upcoming-variables`
262+ - :ref:`django-upcoming-async`
263+
264+ .. _django-upcoming-models:
265+
266+ Model Features
267+ ~~~~~~~~~~~~~~
268+
269+ We plan to support the following model features in
270+ upcoming releases:
271+
272+ - Creating arrays of embedded documents
273+ - Creating polymorphic embedded documents and arrays
274+ - Applying changes to the schema of embedded models to
275+ ``EmbeddedModelField`` values
276+ - Creating multiple models within a collection
277+ - Using forms in embedded models
278+ - Resolve the ``JSONField`` limitations listed in the
279+ :ref:`Field limitations <django-limitations-models-fields>` section of
280+ this guide
281+ - Using a custom ``Field`` class for the ``BSONRegExp`` data type
282+
283+ .. _django-upcoming-database:
284+
285+ Database Features
286+ ~~~~~~~~~~~~~~~~~
287+
288+ We plan to support the following database features in
289+ upcoming releases:
290+
291+ - Creating Vector Search, Atlas Search, and geospatial indexes
292+ - Performing Vector Search, Atlas Search, and geospatial queries
293+ - Encrypting data by using Queryable Encryption and Client-side Field Level Encryption
294+ - Running database transactions
295+ - Using specialized aggregation operators
296+ - Specifying schema validation
297+ - Using GridFS to store large files
298+ - Opening change streams to monitor your data
299+
300+ .. tip::
301+
302+ To learn more about the MongoDB features mentioned in this section, see
303+ the following resources:
304+
305+ - :atlas:`Atlas Vector Search </atlas-vector-search/vector-search-overview/>` in the Atlas documentation
306+ - :atlas:`Atlas Search </atlas-search>` in the Atlas documentation
307+ - :manual:`Geospatial Queries </geospatial-queries/>` in the {+mdb-server+}
308+ manual
309+ - :manual:`In-Use Encryption </security-in-use-encryption/>` in the {+mdb-server+}
310+ manual
311+ - :manual:`Transactions </transactions/>` in the {+mdb-server+}
312+ manual
313+ - :manual:`GridFS </gridfs/>` in the {+mdb-server+}
314+ manual
315+ - :manual:`Change Streams </changeStreams/>` in the {+mdb-server+}
316+ manual
317+
318+ .. _django-upcoming-third-party:
319+
320+ Third Party Features
321+ ~~~~~~~~~~~~~~~~~~~~
322+
323+ We plan to support the following third-party features in
324+ upcoming releases:
325+
326+ - `Django-filter <https://django-filter.readthedocs.io/en/stable/>`__
327+ - `Django Rest Framework <https://www.django-rest-framework.org/>`__
328+ - `Django-allauth <https://docs.allauth.org/en/latest/>`__
329+ - `Wagtail <https://wagtail.org/>`__
330+ - `Django Debug Toolbar <https://django-debug-toolbar.readthedocs.io/en/latest/>`__
331+
332+ .. _django-upcoming-management:
333+
334+ Django Management Command Features
335+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
336+
337+ We plan to support the following Django commands in
338+ upcoming releases:
339+
340+ - ``dumpdata``
341+ - ``loaddata``
342+ - ``inspectdb``
343+ - ``optimizemigration``
344+
345+ .. _django-upcoming-variables:
346+
347+ Database Variable Support
348+ ~~~~~~~~~~~~~~~~~~~~~~~~~
349+
350+ We plan to support the following Django variables for configuring
351+ your database connection in upcoming releases:
352+
353+ - ``CONN_HEALTH_CHECKS``
354+ - ``TIME_ZONE``
355+
356+ .. _django-upcoming-async:
357+
358+ Asynchronous Support
359+ ~~~~~~~~~~~~~~~~~~~~
360+
361+ We plan to offer asynchronous support for {+django-odm+} in future
362+ releases.
0 commit comments