在pythonDjango中,我想查询一个表的foreignKey列,它引发Django.core.exceptions异常.AppRegistryNotReady:模型未加载

2024-06-20 15:11:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个app-name发布者。 我在publisher中运行代码/视图.py. 对于插入条目和报纸,它运行正常=报纸.对象.价值观(“报纸链接”)

当我在SQLite DB浏览器中查看它时,表是正常的。 但当我跑的时候

newspapers = Newspaper.objects.values('country_id')

或者

newspapers = Newspaper.objects.values()

它升起

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

这是我的出版商/型号.py地址:

from django.db import models

class Country(models.Model):
    country_link = models.URLField()
    country_name = models.TextField(primary_key=True)

class Newspaper(models.Model):
    newspaper_link = models.URLField(primary_key=True)
    newspaper_name = models.TextField()
    country = models.ForeignKey(Country)

以下是我的回溯信息:

Traceback (most recent call last):
File     "D:/teamproject/DjangoProjectOne/DjangoProjectOne/mysite/publisher/views.py", line 99, in <module>
preOrder('a')
File "D:/teamproject/DjangoProjectOne/DjangoProjectOne/mysite/publisher/views.py", line 78, in preOrder
newspapers = Newspaper.objects.values()
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\manager.py", line 127, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\query.py", line 606, in values
return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\query.py", line 960, in _clone
c._setup_query()
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\query.py", line 1136, in _setup_query
self.query.add_fields(self.field_names, True)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\sql\query.py", line 1692, in add_fields
name.split(LOOKUP_SEP), opts, alias, allow_many=allow_m2m)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\sql\query.py", line 1466, in setup_joins
names, opts, allow_many, fail_on_missing=True)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\sql\query.py", line 1367, in names_to_path
if field.is_relation and not field.related_model:
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\utils\functional.py", line 60, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Joy Zhang\Anaconda3\lib\site-packages\django\db\models\fields\related.py", line 110, in related_model
apps.check_models_ready()
File "C:\Users\Joy Zhang\Anaconda3\lib\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.

以下是我在“设置”中安装的应用程序:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rss',
'tweet',
'publisher'
)

Tags: djangoinpydbmodelslibpackagesline
2条回答

从回溯中,您似乎在模块级调用preOrder函数。你没有说这个函数在做什么,但这绝对是你的错误的原因。您应该只从视图内调用模型方法,或者从视图中调用的函数调用模型方法。你知道吗

当我独立运行时会出现异常视图.py所以模型没有注册。 我添加了下面的代码,然后它就可以工作了

import os, sys
proj_path = "D:/teamproject/mysite"
# This is so Django knows where to find stuff.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
sys.path.append(proj_path)
# This is so my local_settings.py gets loaded.
os.chdir(proj_path)
# This is so models get loaded. 
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

相关问题 更多 >