Skip to content

DOCSP-46984: Upcoming features #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions source/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Django MongoDB Backend
Connection Configuration </connect>
Model Your Data </model-data>
Interact with Data </interact-data>
Limitations </limitations>
Limitations & Upcoming Features </limitations-upcoming>
Issues & Help </issues-and-help>
Compatibility </compatibility>
API Documentation <{+api+}>
Expand Down Expand Up @@ -56,10 +56,11 @@ Interact with Data
Learn how to use {+django-odm+} to perform operations on MongoDB data
in the :ref:`django-interact-data` section.

Limitations
-----------
Limitations and Upcoming Features
---------------------------------

Learn about the features that {+django-odm+} does not support
and features that we plan to support in upcoming releases
in the :ref:`django-limitations` section.

Compatibility
Expand Down
195 changes: 173 additions & 22 deletions source/limitations.txt → source/limitations-upcoming.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
.. _django-limitations:

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

.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:depth: 2
:class: singlecol

.. facet::
Expand All @@ -21,14 +21,32 @@ Overview
--------

On this page, you can find a list of features that
{+django-odm+} does not support. Because {+django-odm+} is in active
development, some features listed on this page might be considered for future
releases based on user demand. You can request support for a feature by leaving
a suggestion on the `Drivers Feedback Forum
{+django-odm+} does not support. You can also find features
currently planned for the General Availability (GA) and post-GA
releases. We will prioritize these upcoming features
based on user demand, and 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>`__.

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 +55,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 +79,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 +137,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 +154,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 +171,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 +190,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 +203,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 +216,147 @@ 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>`__.

General Availability Release Features
-------------------------------------

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

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

.. _django-upcoming-mongodb:

MongoDB Features
~~~~~~~~~~~~~~~~

We plan to support the following MongoDB features in
the GA release:

- Programmatic management of Vector Search, Atlas Search,
and geospatial indexes by using the Django API
- Vector Search, Atlas Search, and geospatial queries
by using the Django API
- Queryable Encryption and Client-side Field Level Encryption
- Database transactions
- Storage of cached data in the database

We plan to support the following MongoDB features in
future post-GA releases:

- GridFS for large file storage
- Change streams for data monitoring
- Schema validation

.. 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 </core/security-in-use-encryption/>` in the {+mdb-server+}
manual
- :manual:`Transactions </core/transactions/>` in the {+mdb-server+}
manual
- :manual:`GridFS </core/gridfs/>` in the {+mdb-server+}
manual
- :manual:`Change Streams </changeStreams/>` in the {+mdb-server+}
manual

.. _django-upcoming-models:

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

We plan to support the following model features in
the GA release:

- Arrays of embedded documents
- Polymorphic embedded documents and arrays
- Application of changes to the embedded model schema to
``EmbeddedModelField`` values
- Multiple models within a collection
- Improved form representation in embedded models

In future post-GA releases, we plan to support a custom ``Field``
class for the ``BSONRegExp`` data type.

.. _django-upcoming-management:

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

We plan to support the following Django commands in
the GA release:

- ``dumpdata``
- ``loaddata``

.. _django-upcoming-third-party:

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

We plan to support the following third-party features in
the GA release:

- `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-variables:

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

We plan to support the following Django variables for configuring
your database connection in future post-GA releases:

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

.. _django-upcoming-async:

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

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