2011-03-17 34 views
-1

我有一個很奇怪的問題 - 這是由下面的代碼行造成的:爲什麼在Django中過濾數據會破壞我的代碼?

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的嘗試這樣做 - 兩者都發生同樣的事情。

+0

tweetgrab不在您的Python路徑中 – sdolan 2011-03-17 22:56:01

回答

1

由於種種原因,django在導入tweetgrab時遇到了麻煩。

我建議兩件事(假設tweetgrab是您的項目內的應用程序):

  1. 確保項目的父目錄是你的Python路徑上。
  2. 開始導入應用程序/將它們設置爲INSTALLED_APPS作爲myproject.app。這樣你就不會遇到import local_file工作但不在該範圍之外的奇怪問題。

在附註上,我強烈建議遵循類名大寫的命名約定,因爲它可以幫助別人和你自己區分類和函數。

相關問題