Django3报错 Model doesn‘t declare an explicit app_label and isn‘t in an application in INSTALLED_APPS
·
我在app应用文件夹下嵌套了的爬虫代码,因为要调用数据库,为了省事就调用django的orm进行数据库操作。
在项目构建时,改了django的框架的目录结构,其结果如下:
settings修改寻找app应用的路径:
sys.path.insert(0, os.path.join(BASE_DIR, r"chart_analysis/apps"))
models.py代码:
from django.db import models
# Create your models here.
class File(models.Model):
name = models.CharField(max_length=50)
date1 = models.DateTimeField(auto_now=True, null=True)
date2 = models.DateTimeField(auto_now_add=True, null=True)
file = models.ImageField(upload_to='file', null=True) # 写上upload_to,后面指定一个路径,那么将来上传的文件会直接生成到配置文件中的那个medias文件夹中的img文件夹中,不需要我们自己写读取文件内容写入本地文件的操作,django内部帮我们自动处理了
脚本调用代码:
import json
from datetime import datetime
import pymysql
import os,sys
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chart_analysis.settings")#manage.py文件中有同样的环境配置
import django
django.setup()#启动django项目
# 下面注释我报错的引入
# from chart_analysis.apps.home.models import File #引入models.py模型模块
from home.models import File #引入models.py模型模块
books = File.objects.all().first()
# for i in books:
# print(i.name)
print(books.name)
引起这个bug的原因:
以下引用路径不正确,因为在配置文件中我们已经告诉Django去apps下去找各个app了,所以引用各app下的模型文件时,直接from home即可。
错误代码:
from chart_analysis.apps.home.models import File #引入models.py模型模块
解决办法:
修改引用如下
from home.models import File #引入models.py模型模块
更多推荐



所有评论(0)