django 使用 Filter 时的异常 (ImportError: 找不到模块 ..)

0 投票
2 回答
1005 浏览
提问于 2025-04-17 06:50

当我在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

现在对我来说,这样工作得很好。

撰写回答