'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 |
