Django AttributeError: 'DatabaseOperations' 对象没有属性 'select'

18

我有一个连接到PostGIS数据库后端的GeoDjango实例。 当我查询该数据库中的表时,我会收到标题中的错误:

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

如其他地方所建议,我检查了local_settings.py文件以确保指定了正确的数据库引擎:'ENGINE': 'django.contrib.gis.db.backends.postgis'。我的设置文件中已经是正确的。

你该如何解决这个问题?


1
听起来好像引擎不是'django.contrib.gis.db.backends.postgis',尽管你提到了本地设置,但你没有提供足够的信息来说明原因。 - Alasdair
2个回答

33

看起来您的Django设置不完全正确,您的数据库ENGINE可能是'django.db.backends.postgresql',而应该是'django.contrib.gis.db.backends.postgis'。为了确认,请运行:

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

上面显示了我配置了一个名为'default'的数据库,并且它使用了“postgis”引擎(这正是我们想要的)。

注意在设置中使用dj_database_url包可能会覆盖环境变量中的数据库设置。还要注意设置中是否存在多个不是“default”的数据库。


很好的解释 ✌ - dondrzzy

0

检查一下是否忘记添加了,

'django.contrib.gis',

在你的INSTALLED_APPS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接