You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中无法导入models模块问题求助

Django导入模块错误:ModuleNotFoundError: No module named 'dashboard'

错误内容

执行导入语句时触发报错:

from dashboard.models import Customer, Lines, Devices
# 报错:ModuleNotFoundError: No module named 'dashboard'

相关配置与代码

apps.py

from django.apps import AppConfig


class DashboardConfig(AppConfig):
    name = 'dashboard'

settings.py 的 INSTALLED_APPS 配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sessions',
    'dashboard'
]

models.py

from django.db import models


class Customer(models.Model):
    account_name = models.CharField(default='', max_length=254, null=True, blank=True)
    accountNumber = models.CharField(default='', max_length=30, null=True, blank=True)
    accountType = models.CharField(default='', max_length=40, null=True, blank=True)
    allowDangerousExtensions = models.BooleanField(default=False)
    billingCycleDay = models.IntegerField(default=0)
    
    @property
    def customer_name(self):
        return (self.account_name)
    
    
class Lines(models.Model):
    accountId = models.CharField(default='', max_length=30, null=True, blank=True)
    deviceName = models.CharField(default='', max_length=10, null=True, blank=True)
    deviceTypeId = models.CharField(default='', max_length=100, null=True, blank=True)


    def __str__(self):
        return self.accountId()
    

class Devices(models.Model):
    uid = models.CharField(default='', max_length=30, null=True, blank=True)
    online = models.BooleanField(default=False)
    
    customer = models.ForeignKey(Customer, blank=True, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.name()

api.py

from dashboard.models import Customer, Lines, Devices
def create_customer():
    customer = Customer.objects.create()

项目目录结构

  • 项目根目录
    • api.py
    • dashboard/
      • init.py
      • admin.py
      • apps.py
      • models.py

异常现象

admin.py中可以正常导入dashboard.models,但api.py执行相同导入语句时触发模块找不到错误。

解决方法

1. 用Django官方方式运行脚本

不要直接执行python api.py,改用manage.py启动的shell运行代码:

python manage.py shell

在shell中导入并执行api模块的逻辑;或者将api中的功能封装成Django自定义命令,通过python manage.py [你的命令名]运行。

2. 手动初始化Django环境(直接运行api.py时)

如果必须直接运行api.py,在文件开头添加代码初始化Django环境并将项目根目录加入Python路径:

import sys
import os

# 定位项目根目录
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.append(project_root)

# 初始化Django配置
import django
from django.conf import settings

if not settings.configured:
    settings.configure(
        DEBUG=True,
        INSTALLED_APPS=[
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'django.contrib.sessions',
            'dashboard'
        ],
        DATABASES={
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': os.path.join(project_root, 'db.sqlite3'),
            }
        }
    )
    django.setup()

# 后续导入和业务代码
from dashboard.models import Customer, Lines, Devices
def create_customer():
    customer = Customer.objects.create()

3. 确认模块标识文件存在

检查dashboard文件夹下是否有__init__.py文件(空文件即可),Python需要这个文件识别该目录为可导入模块。


内容的提问来源于stack exchange,提问作者Doing Things Occasionally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:25:07