当我在PyCharm 3.4.1的Django控制台中运行以下代码时,收到错误消息:
/home/<user>/Dokuments/django/<folder>/env/bin/python -u /opt/pycharm/helpers/pydev/pydevconsole.py 47532 53281
PyDev console: starting.import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 (default, Sep 10 2014, 19:15:49)
[GCC 4.9.1] on linux
sys.path.extend(['/home/<user>/Dokumente/django/<folder>', '/opt/pycharm/helpers/pycharm', '/opt/pycharm/helpers/pydev'])
import django_manage_shell; django_manage_shell.run("/home/<user>/Dokumente/django/<folder>")
>>> from <app> import models
>>> models.<Model>.objects.values()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/manager.py", line 92, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/query.py", line 626, in values
return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/query.py", line 961, in _clone
c._setup_query()
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/query.py", line 1129, in _setup_query
self.query.add_fields(self.field_names, True)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1610, in add_fields
allow_many=allow_m2m)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1419, in setup_joins
names, opts, allow_many, fail_on_missing=True)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1339, in names_to_path
field, model, direct, m2m = opts.get_field_by_name(name)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/options.py", line 416, in get_field_by_name
cache = self.init_name_map()
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/options.py", line 445, in init_name_map
for f, model in self.get_all_related_m2m_objects_with_model():
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/options.py", line 563, in get_all_related_m2m_objects_with_model
cache = self._fill_related_many_to_many_cache()
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/db/models/options.py", line 577, in _fill_related_many_to_many_cache
for klass in self.apps.get_models():
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/functools.py", line 434, in wrapper
result = user_function(*args, **kwds)
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/apps/registry.py", line 168, in get_models
self.check_models_ready()
File "/home/<user>/Dokumente/django/<folder>/env/lib/python3.4/site-packages/django/apps/registry.py", line 131, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
当我在“普通”django控制台中运行相同的代码时,它可以正常工作
<user>@notebook:~/Dokumente/django/<folder>$ source env/bin/activate
(env)<user>@notebook:~/Dokumente/django/<folder>$ python manage.py shell
Python 3.4.1 (default, Sep 10 2014, 19:15:49)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from <app> import models
>>> models.<Model>.objects.values()
# lists all values
这是一个错误还是我的错?我做错了吗?
答案 0 :(得分:5)
这是PyCharm 3.4与Django 1.7的小不兼容性
当您输入Django Shell时,只需输入:
import django
django.setup()
答案 1 :(得分:2)
python manage.py shell
没有启动普通的shell,它实际上正在完成你的Django应用程序的设置和加载。
您可以在代码中通过configuring Django settings获得相同的效果。
from django.conf import settings
if not settings.configured:
settings.configure(DEBUG=True)
您在配置中传递的任何关键字参数都将在您的设置对象上添加或修改。