Uploaded image for project: 'Python Integrations'
  1. Python Integrations
  2. INTPYTHON-535

AttributeError: 'str' object has no attribute 'setdefault' in django-mongodb Integration & Database connection Setting

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 5.1.0b0
    • Component/s: django
    • None
    • Python Drivers
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

       
      When running migration(./manage.py makemigration), I get the error warning:

      // code placeholder
      (mongobackend) ➜  quickstart git:(main) ✗ ./manage.py migrate
      Traceback (most recent call last):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/asgiref/local.py", line 89, in _lock_storage
          asyncio.get_running_loop()
      RuntimeError: no running event loopDuring handling of the above exception, another exception occurred:Traceback (most recent call last):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 58, in __getitem__
          return getattr(self._connections, alias)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/asgiref/local.py", line 118, in __getattr__
          return getattr(storage, key)
                 ^^^^^^^^^^^^^^^^^^^^^
      AttributeError: '_thread._local' object has no attribute 'default'During handling of the above exception, another exception occurred:Traceback (most recent call last):
        File "/Users/ca/cdc/django-mongodb/quickstart/./manage.py", line 22, in <module>
          main()
        File "/Users/ca/cdc/django-mongodb/quickstart/./manage.py", line 18, in main
          execute_from_command_line(sys.argv)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
          utility.execute()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/core/management/__init__.py", line 416, in execute
          django.setup()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
          apps.populate(settings.INSTALLED_APPS)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/apps/registry.py", line 116, in populate
          app_config.import_models()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/apps/config.py", line 269, in import_models
          self.models_module = import_module(models_module_name)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/importlib/__init__.py", line 90, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 999, in exec_module
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "/Users/ca/cdc/django-mongodb/quickstart/sample_mflix/models.py", line 4, in <module>
          from django_mongodb_backend.models import EmbeddedModel
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django_mongodb_backend/models.py", line 6, in <module>
          class EmbeddedModel(models.Model):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/base.py", line 143, in __new__
          new_class.add_to_class("_meta", Options(meta, app_label))
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/base.py", line 371, in add_to_class
          value.contribute_to_class(cls, name)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/options.py", line 231, in contribute_to_class
          self.db_table, connection.ops.max_name_length()
                         ^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 15, in __getattr__
          return getattr(self._connections[self._alias], item)
                         ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 60, in __getitem__
          if alias not in self.settings:
                          ^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__
          res = instance.__dict__[self.name] = self.func(instance)
                                               ^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 45, in settings
          self._settings = self.configure_settings(self._settings)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/utils.py", line 160, in configure_settings
          conn.setdefault("ATOMIC_REQUESTS", False)
          ^^^^^^^^^^^^^^^
      AttributeError: 'str' object has no attribute 'setdefault'
      (mongobackend) ➜  quickstart git:(main) ✗ ./manage.py makemigration
      Traceback (most recent call last):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/asgiref/local.py", line 89, in _lock_storage
          asyncio.get_running_loop()
      RuntimeError: no running event loopDuring handling of the above exception, another exception occurred:Traceback (most recent call last):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 58, in __getitem__
          return getattr(self._connections, alias)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/asgiref/local.py", line 118, in __getattr__
          return getattr(storage, key)
                 ^^^^^^^^^^^^^^^^^^^^^
      AttributeError: '_thread._local' object has no attribute 'default'During handling of the above exception, another exception occurred:Traceback (most recent call last):
        File "/Users/ca/cdc/django-mongodb/quickstart/./manage.py", line 22, in <module>
          main()
        File "/Users/ca/cdc/django-mongodb/quickstart/./manage.py", line 18, in main
          execute_from_command_line(sys.argv)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
          utility.execute()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/core/management/__init__.py", line 416, in execute
          django.setup()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
          apps.populate(settings.INSTALLED_APPS)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/apps/registry.py", line 116, in populate
          app_config.import_models()
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/apps/config.py", line 269, in import_models
          self.models_module = import_module(models_module_name)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/importlib/__init__.py", line 90, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 999, in exec_module
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "/Users/ca/cdc/django-mongodb/quickstart/sample_mflix/models.py", line 4, in <module>
          from django_mongodb_backend.models import EmbeddedModel
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django_mongodb_backend/models.py", line 6, in <module>
          class EmbeddedModel(models.Model):
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/base.py", line 143, in __new__
          new_class.add_to_class("_meta", Options(meta, app_label))
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/base.py", line 371, in add_to_class
          value.contribute_to_class(cls, name)
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/models/options.py", line 231, in contribute_to_class
          self.db_table, connection.ops.max_name_length()
                         ^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 15, in __getattr__
          return getattr(self._connections[self._alias], item)
                         ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 60, in __getitem__
          if alias not in self.settings:
                          ^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__
          res = instance.__dict__[self.name] = self.func(instance)
                                               ^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/utils/connection.py", line 45, in settings
          self._settings = self.configure_settings(self._settings)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/anaconda3/envs/mongobackend/lib/python3.12/site-packages/django/db/utils.py", line 160, in configure_settings
          conn.setdefault("ATOMIC_REQUESTS", False)
          ^^^^^^^^^^^^^^^
      AttributeError: 'str' object has no attribute 'setdefault' 

      Also initially after creating the project from the template:

      database settings miss the "name" attribute:


      which i solved:

       

      DATABASES = { "name": "default", "default": django_mongodb_backend.parse_uri("mongodb+srv://chrisdevcode:<pass>@djangomongo.oybyx.mongodb.net/?retryWrites=true&w=majority&appName=djangomongo"), }

       project repo:

      https://github.com/achingachris/django-mongodb
       

            Assignee:
            tim.graham@mongodb.com Tim Graham
            Reporter:
            achinga.chris@gmail.com C A
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              None
              None
              None
              None