我在从其他应用导入模型时遇到问题。我正在使用Django 2.0
。
我的项目结构如下:
--api
--api
--settings.py
--urls.py
--wsgi.py
--product
--models.py
--chat
--models.py
--manage.py
为了显示我遇到的问题,我简化了结构。如果你遗漏了重要的东西,请告诉我。
导致错误的文件:
聊天/ models.py
from api.product.models import Product
from django.contrib.auth.models import User
from django.db import models
class Chat(models.Model):
product = models.ForeignKey(Product)
enquirer = models.ForeignKey(User)
产品/ models.py
from django.db import models
from django.contrib.auth.models import User
class Product(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
category = models.ForeignKey(Category, related_name='category', on_delete=None)
front_image = models.ImageField(upload_to="")
title = models.CharField(max_length=100)
price = models.PositiveIntegerField()
description = models.CharField(max_length=5000)
date = models.DateTimeField(auto_now_add=True)
settings.py
INSTALLED_APPS = [
'account.apps.AccountConfig',
'product.apps.ProductConfig',
'profileInfo.apps.ProfileInfoConfig',
'chat.apps.ChatConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'corsheaders',
]
错误如下:ModuleNotFoundError: No module named 'api.product'
我不明白为什么Django甚至找不到api.product
。
这是一个常见的问题吗?谢谢你的帮助。
答案 0 :(得分:5)
根据您的设置和文件目录,项目根目录是最新的app
目录。这意味着您可以通过编写:
from product.models import Product
而不是:
from api.product.models import Product
如果您的IDE建议导入,项目根目录可能有问题。
答案 1 :(得分:3)
我发现适用于Python 3.x的解决方案
...
from django.apps import apps
...
,然后在代码中需要导入模型的任何地方,都可以执行以下操作。
...
model = apps.get_model('app_name', 'ModelName')
...