Skip to content

Correct and copyedit limitations page #20

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 1 commit into from
Feb 26, 2025
Merged
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
118 changes: 31 additions & 87 deletions source/limitations-upcoming.txt
Copy link
Collaborator

@Jibola Jibola Feb 12, 2025

Choose a reason for hiding this comment

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

On line 28 & 29 of this file, we reference the Drivers Feedback Forum. Let's remove that link because we should have the Github Issues & JIRA tickets be our primary proxies for tracking requests and changes.

So we should redirect folks to the Issues & Help section of the docs here instead.

cc: @R-shubham @norareidy

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Done in #24.

Original file line number Diff line number Diff line change
Expand Up @@ -33,36 +33,31 @@ 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-transactions`
- :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:
.. _django-limitations-transactions:

Unsupported Database Variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Transaction management
~~~~~~~~~~~~~~~~~~~~~~

The following database variables are not supported by {+django-odm+}:
Query execution uses Django and MongoDB's default behavior of autocommit mode.
Each query is immediately committed to the database.

- ``ATOMIC_REQUESTS``
- ``AUTOCOMMIT``
- ``CONN_HEALTH_CHECKS``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Not applicable to this backend. pymongo takes care of this functionality.

- ``TIME_ZONE``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It works

Copy link
Collaborator

Choose a reason for hiding this comment

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

It does? Is it already converting between UTC <--> TZ when retrieved from the DB?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Django's transaction management APIs are not supported.

.. _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.
Django doesn't support MongoDB's `polymorphic pattern
<https://www.mongodb.com/developer/products/mongodb/polymorphic-pattern/>`__
where slightly different models share the same collection.

Indexes
```````
Expand Down Expand Up @@ -127,9 +122,7 @@ Fields
The following field types are unavailable in {+django-odm+}:

- ``GeneratedField``
- ``AutoField``
- ``BigAutoField``
- ``SmallAutoField``
- ``AutoField`` (including ``BigAutoField`` and ``SmallAutoField``)

.. _django-limitations-query:

Expand Down Expand Up @@ -158,12 +151,9 @@ 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
information on the ``raw_aggregate()`` method, see
the :ref:`django-raw-queries` guide.

.. TODO: Link to aggregation
{+django-odm+} does not include any custom Django field lookups for the MongoDB
aggregation framework. Instead, use the ``raw_aggregate()`` method. See the
:ref:`django-raw-queries` guide.

Database Functions
``````````````````
Expand All @@ -187,16 +177,13 @@ properly because MongoDB converts the result back to UTC.

.. _django-limitations-management:

Django Management Command Limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unsupported Management Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{+django-odm+} does not support the following Django management commands:
The following ``django-admin`` commands are unsupported:

- ``createcachetable``
- ``inspectdb``
- ``optimizemigration``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It works (no db interaction).

- ``sqlflush``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

not applicable

- ``sqlsequencereset``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Not applicable. This backend does not support fields with sequences (AutoField).


.. _django-limitations-migration:

Expand All @@ -210,23 +197,7 @@ Migration Limitations
Schema Validation </core/schema-validation/specify-json-schema/>` guide in the
{+mdb-server+} manual.
- `DDL Transactions <{+django-docs+}/topics/migrations/#transactions>`__.
- ``migrate --fake-initial`` command.

.. _django-limitations-async:

Asynchronous Limitations
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

~~~~~~~~~~~~~~~~~~~~~~~~

{+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``
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This isn't very important and can be mentioned in the upcoming section only. (Also, "Instead, use the CharField class." doesn't make any sense.)

data type. Instead, use the ``CharField`` class.
- The ``migrate --fake-initial`` option.

.. _django-limitations-performance:

Expand All @@ -250,16 +221,13 @@ GA and post-GA {+django-odm+} releases will likely introduce:
- :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:
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
Expand All @@ -269,8 +237,7 @@ the GA release:
- Database transactions
- Storage of cached data in the database

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

- GridFS for large file storage
- Change streams for data monitoring
Expand Down Expand Up @@ -299,8 +266,7 @@ future post-GA releases:
Model Features
~~~~~~~~~~~~~~

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

- Arrays of embedded documents
- Polymorphic embedded documents and arrays
Expand All @@ -309,49 +275,27 @@ the GA release:
- 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.
In a future post-GA release, we plan to add a custom model field for the
``BSONRegExp`` data type.

.. _django-upcoming-management:

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

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

- ``dumpdata``
- ``loaddata``
Serialization support for ``EmbeddedModelField`` (i.e. Django's ``dumpdata``
and ``loaddata`` management commands) will be added by the GA release.

.. _django-upcoming-third-party:

Third Party Features
~~~~~~~~~~~~~~~~~~~~
Third-Party Libraries
~~~~~~~~~~~~~~~~~~~~~

We plan to support the following third-party features in
the GA release:
We plan to test compatibility with the following third-party libraries by 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