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?
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': 'mydatabase',
'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.
Check if you forgot to add,
'django.contrib.gis',
inside your INSTALLED_APPS
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With