Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 709
Adam Avatar asked Nov 21 '25 09:11

Adam


2 Answers

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.

like image 181
Ben Sturmfels Avatar answered Nov 23 '25 10:11

Ben Sturmfels


Check if you forgot to add,

'django.contrib.gis',

inside your INSTALLED_APPS

like image 32
Raj Yadav Avatar answered Nov 23 '25 10:11

Raj Yadav