[英]Cannot import models to signals.py or tasks.py (django)
我在Django應用程序中導入模型時遇到問題。 我的應用程序API已安裝並遷移並在管理員中可見,我可以通過admin添加記錄,以便模型可以正常工作。
由於某些原因,當我嘗試將模型導入signals.py
出現錯誤,我正在使用Django 2.0
signal.py與模型位於同一目錄。 Django是否更改了導入模型的方式? 我的印象就是那樣。
api導入testModel ModuleNotFoundError中的文件“ c:/Users/Acer/PycharmProjects/mbapi/api/signals.py”,第5行,沒有名為“ 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>
您已經在第一行中導入了TestModel
:
from api.models import TestModel
導致錯誤的行嘗試從應用程序根目錄導入testModel
:
from api import testModel
只需將其刪除。
導入問題很可能是因為( sys.path
)中缺少C:/Users/Acer/PycharmProjects/mbapi/
看來您正在直接運行文件。 在可能的情況下,使用Django時單獨運行每個文件不是很有用。
Django更適合runserver命令,以確保為您正確設置PATH
並運行所有需要的文件。
如果您隨后要測試功能,建議您進行基本的url設置(例如http://localhost:8000/testapi
)或應用程序urls
並讓視圖在您http://localhost:8000/testapi
工具時簡單地運行快速測試代碼。
要斷言導入工作正常,您只需在導入后添加打印並使用python manage.py runserver
。 您應該看到,同時啟動代碼運行( 注意打印:你需要有一些進口signals.py
如文件app.py
下的def ready(self):
功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.