Как подключить Django к mongodb Atlas

Я создаю соединение Django с mongodb Atlas, но при использовании команды makemigrations я получаю следующее сообщение об ошибке:

django==4.0
Python==3.10.12
djongo==1.3.6
pymongo==4.7.3

#! settings.py

DATABASES = {
        'default': {
            'ENGINE': 'djongo',
            'NAME': 'syscandb',
            'ENFORCE_SCHEMA': False,
            'CLIENT': {
                'host': 'mongodb+srv://<user>:<senha>@clusterak.mp9ylv1.mongodb.net/syscandb?retryWrites=true&w=majority'
            }  
        }
}

В MOngo Atlas это выглядит следующим образом:

mongodb+srv://<username>:<password>@clusterak.mp9ylv1.mongodb.net/?retryWrites=true&w=majority&appName=clusterak

Я успешно протестировал через python следующим образом:

"mongodb+srv://<username>:<password>@clusterak.mp9ylv1.mongodb.net/?retryWrites=true&w=majority&authSource=admin"

(venv) rkart@rkart-B-ON:/home/jobs/micakes/syscan$ python3 manage.py makemigrations Изменений не обнаружено Traceback (последний последний вызов): Файл "/home/jobs/micakes/syscan/manage.py", строка 24, in main() Файл "/home/jobs/micakes/syscan/manage.py", строка 20, in main execute_from_command_line(sys.argv) Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/core/management/init.py", строка 425, in execute_from_command_line utility.execute() Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/core/management/init.py", строка 419, in execute self.fetch_command(subcommand).run_from_argv(self.argv) Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/core/management/base.py", строка 386, in run_from_argv connections.close_all() Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/db/utils.py", строка 213, in close_all connection.close() Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/utils/asyncio.py", строка 25, in inner return func(*args, **kwargs) Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", строка 305, in close self._close() Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/djongo/base.py", строка 208, in _close if self.connection: Файл "/home/jobs/micakes/syscan/venv/lib/python3.10/site-packages/pymongo/database.py", строка 1342, in bool. raise

NotImplementedError( NotImpleme

Возникает проблема, когда Django пытается закрыть соединение с базой данных. В частности, кажется, что djongo пытается оценить истинность pymongo объекта базы данных, что вызывает NotImplementedError.

Сообщение об ошибке советует вместо использования if self.connection, использовать if self.connection is not None.

Вы можете попробовать открыть файл djongo/base.py и найти метод _close. Измените строку if self.connection: на: if self.connection is not None:

После внесения этих изменений попробуйте выполнить команду makemigrations еще раз

Вернуться на верх