django 无法导入数据库中的表

django无法导入数据库中的表
原来的代码是:

from .models import Author

debug错误提示:
ImportError: attempted relative import with no known parent package

当我把位置改为绝对路径时(from author.models import Author)
显示我环境变量配置有问题:django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

修改环境变量后反而其他配置出问题,所以又改回来了。
重新建了一个项目,导入了所有文件,仍然是同样的错误。

已确认app在settings中注册:

img

请问是哪里有问题?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/952670
  • 你也可以参考下这篇文章:解决django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings...问题
  • 除此之外, 这篇博客: django3.0报错django.core.exceptions.ImproperlyConfigured中的 django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    环境:python 3.6 django3.0

    项目名:BookRecommend
    app名:data
    aaa.py 是data下新建的一个python文件

    寒假期间我自学了django用的最新版本,然而在我新建的一个python文件中导入models时它报了这样一个错误

    我通过上网搜索,发现只有django2.0的解决方法,没有找到django3.0的,
    我试过没有效果的方法就不再说了。(有的可能是不够详细,所以没有解决)
    我按照网上的方法加上了这些代码
    import os
    import django
    os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “BookRecommend.settings”)
    django.setup()
    由于加的位置不对,再次报错(网上的解决办法没有详细说明)
    在这里插入图片描述
    于是无奈之下只好翻官方文档,最终发现问题所在
    在这里插入图片描述
    在这里插入图片描述
    文档中强调:
    第一个django导入 INSTALLED_APPS .

    如果是应用程序配置类,Django将导入应用程序的根包,该根包由 name 属性。如果它是一个python包,Django会创建一个默认的应用程序配置。

    在这个阶段,您的代码不应该导入任何模型!

    换句话说,应用程序的根包和定义应用程序配置类的模块不应该导入任何模型,甚至是间接导入。

    严格来说,Django允许在加载应用程序配置后导入模型。但是,为了避免不必要的限制 INSTALLED_APPS ,强烈建议在此阶段不要导入任何模型。

    完成此阶段后,在应用程序配置(如 get_app_config() 变得有用。
    于是我将代码换了位置:
    在这里插入图片描述
    问题得到了解决。
    在此提醒:
    BookRecommend是我的项目名,更改时需要改成自己的项目名
    然后再说一下自己血的教训:
    有人给我说可能是我的app名字,即data这个名字与关键字重了,让我改名字试试
    虽然我没有在网上找到data重名的这个可能性,但我还是试了一下,直接使用重命名失败,但我发现项目中涉及到的名字已经改变,而且python、django自带的某些文件中也出现了,不知道有没有被更改,好在项目运行暂时没有出问题。
    所以一定一定不要病急乱投医,轻易使用app重命名,因为可能自带的文件中涉及到了app的名字,后果很严重!!!
    再者,我改过数据库的表的字符长度,也改了迁移文件,还改了模型类,朋友帮我解决问题时,说可能有影响,重新迁移一次,最终我删了数据库(原因是有些表删不了。。。),重新迁移了一次,重新导入了数据。。。。。。
    虽然不知道会不会有影响,建议,不要更改迁移文件,数据库表的结构,还有模型类

    本文涉及到的官方文档django3.0连接:

    https://www.osgeo.cn/django/ref/applications.html#app-loading-process.

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

问题可能出在您的导入语句上。如果您的models.py文件位于应用程序的根目录下,您可以使用以下语句导入模型:

from .models import Author

注意,这是一个相对导入。如果您使用此导入语句并且在另一个模块中使用它,则必须从与models.py相同的目录中导入该模块。否则,您可能会遇到“attempted relative import with no known parent package”错误。

如果您的models.py文件位于应用程序的根目录之外,您可以使用以下语句导入模型:

from author.models import Author

注意,这是一个绝对导入。如果您使用此导入语句并且在另一个模块中使用它,则应用程序的根目录不需要与models.py文件位于同一目录中。

如果您仍然遇到“settings are not configured”错误,请确保您已正确设置了DJANGO_SETTINGS_MODULE环境变量。有关如何设置此变量的说明取决于您的操作系统和IDE。如果您无法解决该问题,请尝试在Django项目的顶部添加以下代码:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

请注意,您需要将'your_project.settings'替换为您的Django项目的实际设置模块路径。

希望这可以帮助您解决问题!