次のチュートリアルで問題が発生しています。テストのポイントに達し、実行中にエラーが発生し続けます
python manage.py test
これが私のエラーです:
(restapi) chrismaltez@Chriss-MacBook-Pro:~/Desktop/pycharmprojects/UDEMY/restapi/src$ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..E
======================================================================
ERROR: src.status.tests (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: src.status.tests
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 428, in _find_test_path
module = self._get_module_from_name(name)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
__import__(name)
File "/Users/chrismaltez/Desktop/pycharmprojects/UDEMY/restapi/src/status/tests.py", line 6, in <module>
from .models import Status
File "/Users/chrismaltez/Desktop/pycharmprojects/UDEMY/restapi/src/status/models.py", line 20, in <module>
class Status(models.Model): #fb status, instagram post, tween, linkedin post
File "/Users/chrismaltez/Desktop/pycharmprojects/UDEMY/restapi/lib/python3.6/site-packages/Django/db/models/base.py", line 118, in __new__
"INSTALLED_APPS." % (module, name)
RuntimeError: Model class src.status.models.Status doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
----------------------------------------------------------------------
Ran 3 tests in 0.096s
ここにインストールされているアプリのステータスがあるため、このエラーが発生する理由がわかりません:
INSTALLED_APPS = [
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
#third party
'rest_framework',
#local
'accounts',
'status',
'updates',
]
そして、ここに私がエラーを抱えていると言っている私のモデルがあります:
from Django.conf import settings
from Django.db import models
def upload_status_image(instance, filename):
return "status/{user}/{filename}".format(user=instance.user, filename=filename)
class StatusQuerySet(models.QuerySet):
pass
class StatusManager(models.Manager):
def get_queryset(self):
return StatusQuerySet(self.model, using=self._db)
# Create your models here.
class Status(models.Model): #fb status, instagram post, tween, linkedin post
user = models.ForeignKey(settings.AUTH_USER_MODEL) # user instance .save
content = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to=upload_status_image, null=True, blank=True) # great 3rd part package = Django storanges --> AWS#pip install pillow to handle images
updated = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
objects = StatusManager
def __str__(self):
return str(self.content)[:50]
class Meta:
verbose_name = "Status post"
verbose_name_plural = "Status posts"
@property
def owner(self):
return self.user
macでDjango 1.11.8で実行しています。
Makemigrationsを実行しても、エラーは発生しません。サーバーを実行すると、エラーは発生しません。私はこれを試しました solution が、何もうまくいきませんでした。
どんな助けもありがたいです。
-update- filetree:
restapi
|-bin
|-include
|-lib
|-scripts
|-src
|-accounts
| |-api
| | |-user
| | | |-__init__.py
| | | |-serializers.py
| | | |-urls.py
| | | |-views.py
| | |-__init__.py
| | |-permissions.py
| | |-serializers.py
| | |-test_user_api.py
| | |-urls.py
| | |-utils.py
| | |-views.py
| |-+migrations
| |-__init__.py
| |-admin.py
| |-apps.py
| |-models.py
| |-tests.py
| |-views.py
|-cfeapi
| |-restconf
| | |-__init__.py
| | |-main.py
| | |-pagination.py
| |-__init__.py
| |-mixins.py
| |-settings.py
| |-urls.py
| |-wsgi.py
|-status
|-api
| |-__init__.py
| |-serializers.py
| |-urls.py
| |-views.py
|+migrations
|-__init__.py
|-admin.py
|-apps.py
|-forms.py
|-models.py
|-tests.py
|-views.py
この問題に遭遇したとき、直接指定していないパスのフォルダーに対してModuleNotFoundErrorが発生しました。
PyCharm内でテストファイルを実行していました。
修正により、テストファイルにメインエントリポイントが追加されました。
if __name__ == '__main__':
unittest.main()