Skip to content
Merged
185 changes: 168 additions & 17 deletions source/limitations.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _django-limitations:

============
Limitations
============
=================================
Limitations and Upcoming Features
=================================

.. contents:: On this page
:local:
Expand All @@ -27,8 +27,28 @@ releases based on user demand. You can request support for a feature by leaving
a suggestion on the `Drivers Feedback Forum
<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.

You can also find a list of features that {+django-odm+}
will likely support in upcoming releases.

Feature Limitations
-------------------

In this section, you can learn about the following
types of unsupported {+framework+} and MongoDB features:

- :ref:`django-limitations-database`
- :ref:`django-limitations-models`
- :ref:`django-limitations-query`
- :ref:`django-limitations-management`
- :ref:`django-limitations-migration`
- :ref:`django-limitations-async`
- :ref:`django-limitations-data`
- :ref:`django-limitations-performance`

.. _django-limitations-database:

Unsupported Database Variables
------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following database variables are not supported by {+django-odm+}:

Expand All @@ -37,16 +57,18 @@ The following database variables are not supported by {+django-odm+}:
- ``CONN_HEALTH_CHECKS``
- ``TIME_ZONE``

.. _django-limitations-models:

Model Limitations
-----------------
~~~~~~~~~~~~~~~~~

The following limitations apply to models in {+django-odm+}:

- {+django-odm+} enforces a one-to-one mapping between a Django model and a
MongoDB collection. Because of this, multiple models cannot share the same collection.

Indexes
~~~~~~~
```````

{+django-odm+} does not support the following index functionalities:

Expand All @@ -59,8 +81,10 @@ To learn how to run unsupported database operations by operating directly on
your ``MongoClient`` instance, see :ref:`django-client-operations` in the
Perform Raw Database Queries guide.

.. _django-limitations-models-fields:

Fields
~~~~~~
``````

{+django-odm+} has the following limitations on the specified field types:

Expand Down Expand Up @@ -115,8 +139,10 @@ The following field types are unavailable in {+django-odm+}:
- ``BigAutoField``
- ``SmallAutoField``

.. _django-limitations-query:

Querying Limitations
--------------------
~~~~~~~~~~~~~~~~~~~~

{+django-odm+} does not support the following ``QuerySet`` API methods:

Expand All @@ -130,14 +156,14 @@ Querying Limitations
that span multiple collections.

Geospatial Queries
~~~~~~~~~~~~~~~~~~
``````````````````

- {+django-odm+} does not support ``GeoDjango``.
- {+django-odm+} does not have any Django lookup operators for MongoDB-specific
geospatial queries.

Aggregation Operators
~~~~~~~~~~~~~~~~~~~~~
`````````````````````

{+django-odm+} does not contain any custom Django field lookups for the MongoDB
aggregation framework. Instead, use the ``raw_aggregate()`` method. For more
Expand All @@ -147,7 +173,7 @@ the :ref:`django-raw-queries` guide.
.. TODO: Link to aggregation

Database Functions
~~~~~~~~~~~~~~~~~~
``````````````````

{+django-odm+} does not support the following database functions:

Expand All @@ -166,8 +192,10 @@ Database Functions
The ``tzinfo`` parameter of the ``Trunc`` database functions doesn't work
properly because MongoDB converts the result back to UTC.

.. _django-limitations-management:

Django Management Command Limitations
-------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{+django-odm+} does not support the following Django management commands:

Expand All @@ -177,8 +205,10 @@ Django Management Command Limitations
- ``sqlflush``
- ``sqlsequencereset``

.. _django-limitations-migration:

Migration Limitations
---------------------
~~~~~~~~~~~~~~~~~~~~~

- {+django-odm+} does not support enforced schema validation. To learn how to
enforce schema validation in your application, see the :manual:`Specify JSON
Expand All @@ -188,24 +218,145 @@ Migration Limitations
<{+django-docs+}/topics/migrations/#transactions>`__.
- {+django-odm+} does not support the ``migrate --fake-initial`` command.

Asynchronous Support
--------------------
.. _django-limitations-async:

Asynchronous Limitations
~~~~~~~~~~~~~~~~~~~~~~~~

{+django-odm+} has not been tested for support of the asynchronous functionality of
the Django API.

.. _django-limitations-data:

Data Types
----------
~~~~~~~~~~

{+django-odm+} does not have a custom ``Field`` class for the ``BSONRegExp``
data type. Instead, use the ``CharField`` class.

.. _django-limitations-performance:

Performance
-----------
~~~~~~~~~~~

The engineering team is prioritizing feature development for the Public Preview
release of {+django-odm+}. Because of this, you might notice performance
limitations with certain workloads. If you encounter any performance issues,
please report them as shown in the :ref:`Issues & Help <django-issues-and-help>`
guide. You can also share your feedback on the `Drivers Feedback Forum
<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.

Upcoming Features
-----------------

In this section, you can learn about the following
types of {+framework+} and MongoDB features that
General Availability (GA) and post-GA {+django-odm+} releases
will likely introduce:

- :ref:`django-upcoming-models`
- :ref:`django-upcoming-database`
- :ref:`django-upcoming-third-party`
- :ref:`django-upcoming-management`
- :ref:`django-upcoming-variables`
- :ref:`django-upcoming-async`

.. _django-upcoming-models:

Model Features
~~~~~~~~~~~~~~

We plan to support the following model features in
upcoming releases:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove all upcoming with "GA"/ Post-GA release? Upcoming may sound like the next release. We will have many smaller releases leading up to the final GA release.


- Creating arrays of embedded documents
- Creating polymorphic embedded documents and arrays
- Applying changes to the schema of embedded models to
``EmbeddedModelField`` values
- Creating multiple models within a collection
- Using forms in embedded models
- Resolve the ``JSONField`` limitations listed in the
:ref:`Field limitations <django-limitations-models-fields>` section of
this guide
- Using a custom ``Field`` class for the ``BSONRegExp`` data type

.. _django-upcoming-database:

Database Features
~~~~~~~~~~~~~~~~~

We plan to support the following database features in
upcoming releases:

- Creating Vector Search, Atlas Search, and geospatial indexes
- Performing Vector Search, Atlas Search, and geospatial queries
- Encrypting data by using Queryable Encryption and Client-side Field Level Encryption
- Running database transactions
- Using specialized aggregation operators
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove this for now.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Using specialized aggregation operators"

- Specifying schema validation
- Using GridFS to store large files
- Opening change streams to monitor your data

.. tip::

To learn more about the MongoDB features mentioned in this section, see
the following resources:

- :atlas:`Atlas Vector Search </atlas-vector-search/vector-search-overview/>` in the Atlas documentation
- :atlas:`Atlas Search </atlas-search>` in the Atlas documentation
- :manual:`Geospatial Queries </geospatial-queries/>` in the {+mdb-server+}
manual
- :manual:`In-Use Encryption </security-in-use-encryption/>` in the {+mdb-server+}
manual
- :manual:`Transactions </transactions/>` in the {+mdb-server+}
manual
- :manual:`GridFS </gridfs/>` in the {+mdb-server+}
manual
- :manual:`Change Streams </changeStreams/>` in the {+mdb-server+}
manual

.. _django-upcoming-third-party:

Third Party Features
~~~~~~~~~~~~~~~~~~~~

We plan to support the following third-party features in
upcoming releases:

- `Django-filter <https://django-filter.readthedocs.io/en/stable/>`__
- `Django Rest Framework <https://www.django-rest-framework.org/>`__
- `Django-allauth <https://docs.allauth.org/en/latest/>`__
- `Wagtail <https://wagtail.org/>`__
- `Django Debug Toolbar <https://django-debug-toolbar.readthedocs.io/en/latest/>`__

.. _django-upcoming-management:

Django Management Command Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We plan to support the following Django commands in
upcoming releases:

- ``dumpdata``
- ``loaddata``
- ``inspectdb``
- ``optimizemigration``

.. _django-upcoming-variables:

Database Variable Support
~~~~~~~~~~~~~~~~~~~~~~~~~

We plan to support the following Django variables for configuring
your database connection in upcoming releases:

- ``CONN_HEALTH_CHECKS``
- ``TIME_ZONE``

.. _django-upcoming-async:

Asynchronous Support
~~~~~~~~~~~~~~~~~~~~

We plan to offer asynchronous support for {+django-odm+} in future
releases.
Loading