我真是一筹莫及。经过十几个小时的故障排除,可能更多,我以为我终于可以做生意了,但接着我发现:
Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label
网上关于这方面的信息太少了,没有解决方案可以解决我的问题。任何建议都将不胜感激。
我使用的是Python 3.4和Django 1.10。
从我的settings.py:
INSTALLED_APPS = [
'DeleteNote.apps.DeletenoteConfig',
'LibrarySync.apps.LibrarysyncConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
我的app .py文件是这样的:
from django.apps import AppConfig
class DeletenoteConfig(AppConfig):
name = 'DeleteNote'
and
from django.apps import AppConfig
class LibrarysyncConfig(AppConfig):
name = 'LibrarySync'
我今天试图运行Django测试时出现了这个错误,因为我在其中一个文件中使用了.models import *语法的简写。问题是我的文件结构是这样的:
apps/
myapp/
models/
__init__.py
foo.py
bar.py
在models/__init__.py中,我使用简写语法导入我的模型:
from .foo import *
from .bar import *
在我的应用程序中,我像这样导入模型:
from myapp.models import Foo, Bar
这导致Django模型在运行./manage.py测试时没有显式声明app_label。
为了解决这个问题,我必须显式地从models/__init__.py中的完整路径导入:
from myapp.models.foo import *
from myapp.models.bar import *
这就解决了错误。
H - t https://medium.com/@michal。博克fix-weird-exceptions-when-running-django-tests-f58def71b59a
很可能您有依赖的导入。
在我的例子中,我在我的模型中使用了一个序列化器类作为参数,并且序列化器类使用了这个模型:
serializer_class = AccountSerializer
from ..api.serializers import AccountSerializer
class Account(AbstractBaseUser):
serializer_class = AccountSerializer
...
在“serializers”文件中:
from ..models import Account
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = Account
fields = (
'id', 'email', 'date_created', 'date_modified',
'firstname', 'lastname', 'password', 'confirm_password')
...