2017-10-17 70 views
0

我想将第一个模型添加到已运行的应用程序,现在我无法启动它,因为它总是给出AppRegistryNotReady。这只会发生,如果我的模型MailLogmodels.Model的孩子。Django AppRegistryNotReady定义模型时

from __future__ import unicode_literals 
from django.db import models 

#class MailLog(models.Model): # like this, it crashes 
class MailLog(): # like this, it works 
    # Field definitions 
    recipient = models.EmailField() 
    created = models.DateTimeField(auto_now_add=True) 
    template = models.CharField(max_length=500) 
    error = models.TextField(null=True) 

    def __str__(self): 
     return self.recipient+" "+self.template+"("+str(self.created)+")" 

错误发生时,不管有什么类里面,即使是只有一个有pass。但是,我可以在admin.py中导入我的模型,并在从我称为core.py的文件导入时崩溃。这个文件看起来是这样的:

import boto3 
from botocore.exceptions import ClientError 
from django.template import loader 
from django.conf import settings 
from .templates import * 
from .models import MailLog 

回溯看起来像这样

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 316, in execute 
    settings.INSTALLED_APPS 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/conf/__init__.py", line 97, in __init__ 
    mod = importlib.import_module(self.SETTINGS_MODULE) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/niels/Dokumente/jobapp/deploy/backend/settings.py", line 255, in <module> 
    django.setup() 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/apps/config.py", line 90, in create 
    module = import_module(entry) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/niels/Dokumente/jobapp/deploy/ses_mail/__init__.py", line 1, in <module> 
    from .core import send 
    File "/home/niels/Dokumente/jobapp/deploy/ses_mail/core.py", line 7, in <module> 
    from .admin import MailLog 
    File "/home/niels/Dokumente/jobapp/deploy/ses_mail/admin.py", line 2, in <module> 
    from .models import * 
    File "/home/niels/Dokumente/jobapp/deploy/ses_mail/models.py", line 6, in <module> 
    class MailLog(models.Model): 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/db/models/base.py", line 105, in __new__ 
    app_config = apps.get_containing_app_config(module) 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/apps/registry.py", line 237, in get_containing_app_config 
    self.check_apps_ready() 
    File "/home/niels/anaconda3/envs/app/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready 
    raise AppRegistryNotReady("Apps aren't loaded yet.") 
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 
+0

显示模型的完整代码以及你得到的完整回溯 –

+0

顺便说一句,traceback中的from .admin import MailLog'看起来很奇怪 - 你应该直接从'.models'导入。 – Alasdair

回答

1

你不应该导入Django模型在应用程序的__init__(或使他们由core进口导入如果您使用一个空的__init__.py它应该停止错误

+0

非常感谢! – nielsrolf