django 使用 Filter 时的异常 (ImportError: 找不到模块 ..)
当我在Django中使用“filter”方法时:
dumpData.objects.filter(bid = True)
我遇到了以下错误:
ImportError: 没有名为Trades的模块
File "XXX\CacheUtil.py", line 141, in loadItems print DumpData.objects.filter(bid = True)
File "XXX\site-packages\django\db\models\manager.py", line 141, in filter
return self.get_query_set().filter(*args, **kwargs)
File "X:\Python27\lib\site-packages\django\db\models\query.py", line 550, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "X:\Python27\lib\site-packages\django\db\models\query.py", line 568, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "X:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1194, in add_q
can_reuse=used_aliases, force_having=force_having)
File "X:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1069, in add_filter
negate=negate, process_extras=process_extras)
File "X:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1248, in setup_joins
field, model, direct, m2m = opts.get_field_by_name(name)
File "X:\Python27\lib\site-packages\django\db\models\options.py", line 307, in get_field_by_name
cache = self.init_name_map()
File "X:\Python27\lib\site-packages\django\db\models\options.py", line 337, in init_name_map
for f, model in self.get_all_related_m2m_objects_with_model():
File "X:\Python27\lib\site-packages\django\db\models\options.py", line 414, in get_all_related_m2m_objects_with_model
cache = self._fill_related_many_to_many_cache()
File "X:\Python27\lib\site-packages\django\db\models\options.py", line 428, in _fill_related_many_to_many_cache
for klass in get_models():
File "X:\Python27\lib\site-packages\django\db\models\loading.py", line 167, in get_models
self._populate()
File "X:\Python27\lib\site-packages\django\db\models\loading.py", line 61, in _populate
self.load_app(app_name, True)
File "X:\Python27\lib\site-packages\django\db\models\loading.py", line 76, in load_app
app_module = import_module(app_name)
File "X:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named Trades
Trade是我的Django应用,它在settings.py文件中被列出。
INSTALLED_APPS = (
(...),
'Trades')
DumpData被定义为:
class DumpData(models.Model):
orderId = models.BigIntegerField()
typeId = models.BigIntegerField()
price = models.DecimalField(decimal_places=2,max_digits=20)
bid = models.BooleanField()
issued = models.DateField()
dateDumped = models.DateTimeField()
如果我只尝试
dumbData.objects.all()
一切都正常,所以这可能不是服务器或数据库的问题。(而且我可以在没有错误的情况下保存日期)。
2 个回答
0
我没有找到相关的文档,但我建议给应用程序使用小写字母的名字。
另外,可以试试:
dumpData.objects.filter(bid = True).all()
0
好的,我解决了我的问题。
之所以之前不工作,是因为我的项目结构有问题,我的结构是这样的:
\src
\PackageNr1
Main.py <-- File where Django was called.
\PackageNr2 <-- Package for the Django Files
\trades <-- Django App
models.py ,
views ...usw
settings.py <-- Django Settings File
manage.py
在这个结构下,我可以调用像“save()”或者“object.all()”这样的函数,而且它们都能正常工作。但大多数情况下,它们却不行。所以我把我的Django包移动到了主包里,现在一切都正常了。新的结构看起来是这样的:
\src
\PackageNr1
\trades <-- The django app
models.py
views ....
Main.py
settings.py <--Django Files
manage.py
现在对我来说,这样工作得很好。