我无法在Django应用中导入模型。 我的应用程序API已安装并迁移并在管理员中可见,我可以通过admin添加记录,以便模型可以正常工作。
由于某种原因,当我尝试将模型导入到signals.py
时出现错误
我正在使用Django 2.0
signals.py与模型位于同一目录。 Django是否更改了导入模型的方式?我的印象就是那样。
文件“ c:/Users/Acer/PycharmProjects/mbapi/api/signals.py”,第5行,在 从api导入testModel ModuleNotFoundError:没有名为“ api
的模块
signals.py
from django.dispatch import receiver
from django.db.models.signals import pre_save, pre_delete, post_save,
post_delete
from django.dispatch import receiver
from api.models import testModel
@receiver(post_save, sender=testModel)
def update(sender, instance, created, **kwargs):
if instance.status == 'inplay':
print('this is inplay')
send()
models.py
from django.db import models
# Create your models here.
class testModel(models.Model):
player1 = models.CharField(null=True, max_length=50)
player2 = models.CharField(null=True, max_length=50)
Player1_odds = models.FloatField(null=True)
Player2_odds = models.FloatField(null=True)
status = models.CharField(null=True, max_length=50)
complete = models.CharField(null=True, max_length=50)
class inplay_model(models.Model):
now_inplay = models.CharField(null=True, max_length=10)
堆栈跟踪
(venv) C:\Users\Acer\PycharmProjects\mbapi>c:/Users/Acer/PycharmProjects/mbapi/venv/Scripts/python.exe c:/Users/Acer/PycharmProjects/mbapi/api/signals.py
Traceback (most recent call last):
File "c:/Users/Acer/PycharmProjects/mbapi/api/signals.py", line 5, in <module>
from api.models import testModel
ModuleNotFoundError: No module named 'api'
(venv) C:\Users\Acer\PycharmProjects\mbapi>
答案 0 :(得分:0)
您已经在第一行中导入了TestModel
:
from api.models import TestModel
导致错误的行尝试从应用程序根目录导入testModel
:
from api import testModel
只需将其删除。
答案 1 :(得分:0)
导入问题很可能是因为(C:/Users/Acer/PycharmProjects/mbapi/
)中缺少sys.path
似乎您正在直接运行文件。可能的话,使用Django时单独运行每个文件不是很有用。
Django更适合runserver命令,以确保为您正确设置PATH
并运行所有需要的文件。
如果您随后要测试功能,建议您进行基本的url设置(例如http://localhost:8000/testapi
)或在应用程序urls
中进行设置,并让视图简单地运行快速测试代码当您习惯使用这些工具时。
要断言导入工作正常,您只需在导入后 添加打印并使用python manage.py runserver
。启动代码运行时,您应该看到打印内容(注意:,您需要在signals.py
函数下导入app.py
文件,例如def ready(self):