定义模型时的Django AppRegistryNotReady

时间:2017-10-17 09:54:36

标签: django

我想将第一个模型添加到已经正在运行的应用中,现在我无法启动它,因为它始终会提供AppRegistryNotReady。如果我的模型MailLogmodels.Model的子项,则只会发生这种情况。

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.

1 个答案:

答案 0 :(得分:1)

您不应该在应用的__init__中导入Django模型(或者通过从core导入来导入它们。如果您使用空__init__.py,则应该停止错误。