'Django AttributeError: 'DatabaseOperations' object has no attribute 'select'

I've got a GeoDjango instance connected to a PostGIS database backend. When I query a table in this database, I get the error in the title:

AttributeError: 'DatabaseOperations' object has no attribute 'select'

As suggested elsewhere, I checked to make sure that my local_settings.py file specified the correct database engine: 'ENGINE': 'django.contrib.gis.db.backends.postgis'. This is already correct in my settings file.

How do you fix this problem?



Solution 1:[1]

It sounds as though your Django settings aren't quite right and that your database ENGINE may be 'django.db.backends.postgresql', when it should be 'django.contrib.gis.db.backends.postgis'. To confirm, run:

python manage.py shell

>>> from django.conf import settings
>>> settings.DATABASES
{'default': {'ATOMIC_REQUESTS': False,
  'AUTOCOMMIT': True,
  'CONN_MAX_AGE': 0,
  'ENGINE': 'django.contrib.gis.db.backends.postgis',
  'HOST': '',
  'NAME': 'groundedpleasures',
  'OPTIONS': {},
  'PASSWORD': '',
  'PORT': '',
  'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None},
  'TIME_ZONE': None,
  'USER': ''}}

The above shows that I have one 'default' database configured and it's using the "postgis" engine (which is what we want).

Watch out for the use of the dj_database_url package in your settings as this may be overriding the database settings from environment variables. Also watch for multiple databases other than "default" in the settings.

Solution 2:[2]

Check if you forgot to add,

'django.contrib.gis',

inside your INSTALLED_APPS

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ben Sturmfels
Solution 2 Raj Yadav