簡體   English   中英

無法將模型導入signals.py或tasks.py(Django)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM