【发布时间】:2011-07-17 19:13:33
【问题描述】:
我遇到了一个相当奇怪的问题——这是由以下代码行引起的:
userlist = twitter_user.objects.filter(enabled=True)
如果我注释掉这一行,代码可以正常工作,但是当取消注释时,我会收到以下错误消息:
Traceback (most recent call last):
File "script.py", line 33, in <module>
userlist = twitter_user.objects.filter(enabled=True) ###This is the line that causes the trouble.
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/manager.py", line 141, in filter
return self.get_query_set().filter(*args, **kwargs)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/query.py", line 561, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/query.py", line 579, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1170, in add_q
can_reuse=used_aliases, force_having=force_having)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1058, in add_filter
negate=negate, process_extras=process_extras)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1225, in setup_joins
field, model, direct, m2m = opts.get_field_by_name(name)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/options.py", line 296, in get_field_by_name
cache = self.init_name_map()
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/options.py", line 326, in init_name_map
for f, model in self.get_all_related_m2m_objects_with_model():
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/options.py", line 401, in get_all_related_m2m_objects_with_model
cache = self._fill_related_many_to_many_cache()
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/options.py", line 415, in _fill_related_many_to_many_cache
for klass in get_models():
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/loading.py", line 167, in get_models
self._populate()
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/loading.py", line 61, in _populate
self.load_app(app_name, True)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/db/models/loading.py", line 76, in load_app
app_module = import_module(app_name)
File "/home/beano/projects/bikernod.com/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named tweetgrab
我认为这可能与模型本身有关,所以我尝试从 models.BooleanField() 更改为 models.CharField() - 这没有区别。
这是来自 tweetgrab 应用程序的 models.py 条目:
from django.db import models
class twitter_user(models.Model):
username = models.CharField(max_length=30)
enabled = models.BooleanField()
def __unicode__(self):
return self.username
据我所知(我对 Django/Python 很陌生),我最初声明的代码行导致找不到应用程序。
我还确保它包含在 settings.py 文件中 - 在已安装的应用程序中,如下所示:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'tweetgrab',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
)
知道这里发生了什么,我也用 MySQL 和 Sqlite 尝试过 - 两者都会发生同样的事情。
【问题讨论】:
-
tweetgrab 不在你的 python 路径上
标签: python django django-models models