[英]PyCharm Django Console - object.values() does not work
当我在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
这是错误还是我的错? 难道我做错了什么?
这是PyCharm 3.4与Django 1.7的一个很小的不兼容性
当您输入Django Shell时,只需输入:
import django
django.setup()
python manage.py shell
不能启动普通的shell,它实际上是在对Django应用程序进行完整的设置和加载。
通过在代码中配置Django设置 ,可以达到相同的效果。
from django.conf import settings
if not settings.configured:
settings.configure(DEBUG=True)
您传递给configure的任何关键字参数都将在您的设置对象上添加或修改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.