django orm常见错误raise AppRegistryNotReady(“Apps aren‘t loaded yet.“)RuntimeError: Model class models等等

本文介绍了在使用Django ORM时可能会遇到的几个错误,包括'QuerySet'对象没有'id'属性,'Apps aren't loaded yet.'的AppRegistryNotReady错误,以及Model类缺少明确app_label的问题。错误主要与INSTALLED_APPS配置错误有关,文中提供了相应的解决方案。
错误一:ValueError: Cannot assign "<QuerySet [<User: user>]>": "SwitchRecord.user_id" must be a "User" instance.
原因:
# 外键django用户id
class SwitchRecord(models.Model):
    
    user_id = models.ForeignKey('User', on_delete=models.SET(0))
解决方法:传入User实例test_user[0]
test_user = User.objects.filter(id=8)
print(type(test_user[0]))

错误二:AttributeError: 'QuerySet' object has no attribute 'id'

原因:
User.objects.filter(id=8)返回的是QuerySet类

错误三:raise AppRegistryNotReady("Apps aren't loaded yet.")

错误原因:xxx.settings INSTALLED_APPS配置有误,错误如下图

 

去除xxx.models,django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.报错解决

错误四

解决错误三后又报错:RuntimeError: Model class models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

原因:使用相对路径导包
from models import User
解决方法:使用绝对路径导包
from xxx.models import User
================================================== 启动 manage.py 当前工作目录: D:\hyx_medical 文件所在目录: D:\hyx_medical ================================================== 添加路径到 sys.path: D:\hyx_medical 当前 sys.path: ['D:\\hyx_medical', 'D:\\hyx_medical', 'D:\\Miniconda3\\envs\\523\\python39.zip', 'D:\\Miniconda3\\envs\\523\\DLLs', 'D:\\Miniconda3\\envs\\523\\lib', 'D:\\Miniconda3\\envs\\523', 'D:\\Miniconda3\\envs\\523\\lib\\site-packages', 'D:\\Miniconda3\\envs\\523\\lib\\site-packages\\win32', 'D:\\Miniconda3\\envs\\523\\lib\\site-packages\\win32\\lib', 'D:\\Miniconda3\\envs\\523\\lib\\site-packages\\Pythonwin'] 管理命令执行错误: Apps aren't loaded yet. Traceback (most recent call last): File "D:\hyx_medical\manage.py", line 219, in <module> main() File "D:\hyx_medical\manage.py", line 33, in main from backend.models import ImageTask File "D:\hyx_medical\backend\models.py", line 2, in <module> from django.contrib.auth.models import User File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\models.py", line 3, in <module> from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\base_user.py", line 57, in <module> class AbstractBaseUser(models.Model): File "D:\Miniconda3\envs\523\lib\site-packages\django\db\models\base.py", line 129, in __new__ app_config = apps.get_containing_app_config(module) File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 260, in get_containing_app_config self.check_apps_ready() File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 138, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. PS D:\hyx_medical> python manage.py runserver Watching for file changes with StatReloader Exception in thread django-main-thread: Traceback (most recent call last): File "D:\Miniconda3\envs\523\lib\threading.py", line 980, in _bootstrap_inner self.run() File "D:\Miniconda3\envs\523\lib\threading.py", line 917, in run self._target(*self._args, **self._kwargs) File "D:\Miniconda3\envs\523\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\Miniconda3\envs\523\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run autoreload.raise_last_exception() File "D:\Miniconda3\envs\523\lib\site-packages\django\utils\autoreload.py", line 86, in raise_last_exception raise _exception[1] File "D:\Miniconda3\envs\523\lib\site-packages\django\core\management\__init__.py", line 394, in execute autoreload.check_errors(django.setup)() File "D:\Miniconda3\envs\523\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\Miniconda3\envs\523\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 116, in populate app_config.import_models() File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\config.py", line 269, in import_models self.models_module = import_module(models_module_name) File "D:\Miniconda3\envs\523\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "D:\hyx_medical\backend\models.py", line 2, in <module> from django.contrib.auth.models import User File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\models.py", line 5, in <module> from django.contrib.contenttypes.models import ContentType File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\contenttypes\models.py", line 139, in <module> class ContentType(models.Model): File "D:\Miniconda3\envs\523\lib\site-packages\django\db\models\base.py", line 134, in __new__ raise RuntimeError( RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
最新发布
06-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值