Джанго не видит ни одного из установленных приложений - PullRequest
0 голосов
/ 22 апреля 2019

После небольшой миграции я продолжаю получать следующую ошибку от команды runserver Джанго:

RuntimeError: Класс модели captcha.models.CaptchaStore не объявляет явную метку app_label и не находится в приложении в INSTALLED. _APPS.

Это вызвано django-simple-captcha который работал довольно долго (месяц). Я не изменил что-то в этом приложении. Я удалил его, и теперь Django не может найти приложение ADMIN, так что оно как-то связано с целостностью.

Мои настройки такие:


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # custom
    "boats.apps.BoatsConfig",
    "articles.apps.ArticlesConfig",
    #3rd party
    "captcha",
    "bootstrap4",
    "django_cleanup",
    "easy_thumbnails",
    "social_django",
    "crispy_forms",
    "extra_views",
    "debug_toolbar",
    "reversion",
    "dynamic_validator",
    "django.forms",  # new for a custom widgets

Как я могу решить эту проблему? Это кажется странным ... Или, как альтернатива, как откатить последнюю миграцию?

Полная обратная связь ниже:



(myproject)  C:\Users\hardcase1\PycharmProjects\myproject>python manage.py runserver
Watching for file changes with StatReloader
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\python\Lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "C:\python\Lib\threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\commands\runserver.py", line 109
, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 77, in raise_last_exc
eption
    raise _exception[0](_exception[1]).with_traceback(_exception[2])
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\apps\registry.py", line 114, in populate
    app_config.import_models()
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\apps\config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\hardcase1\PycharmProjects\myproject\boats\models.py", line 9, in <module>
    from articles.models import SubHeading
  File "C:\Users\hardcase1\PycharmProjects\myproject\articles\models.py", line 4, in <module>
    from boats.models import ExtraUser
ImportError: cannot import name 'ExtraUser' from 'boats.models' (C:\Users\hardcase1\PycharmProjects\myproject\boats\models.py)

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\__init__.py", line 381, in execu
te_from_command_line
    utility.execute()
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\__init__.py", line 375, in execu
te
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\base.py", line 323, in run_from_
argv
    self.execute(*args, **cmd_options)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\commands\runserver.py", line 60,
 in execute
    super().execute(*args, **options)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\commands\runserver.py", line 95,
 in handle
    self.run(**options)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\core\management\commands\runserver.py", line 102
, in run
    autoreload.run_with_reloader(self.inner_run, **options)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 579, in run_with_relo
ader
    start_django(reloader, main_func, *args, **kwargs)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 564, in start_django
    reloader.run(django_main_thread)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\autoreload.py", line 272, in run
    get_resolver().urlconf_module
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\utils\functional.py", line 80, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\urls\resolvers.py", line 564, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\hardcase1\PycharmProjects\myproject\myproject\urls.py", line 14, in <module>
    path("captcha/", include("captcha.urls")),
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\urls\conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\captcha\urls.py", line 2, in <module>
    from captcha import views
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\captcha\views.py", line 3, in <module>
    from captcha.models import CaptchaStore
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\captcha\models.py", line 25, in <module>
    class CaptchaStore(models.Model):
  File "C:\Users\hardcase1\.virtualenvs\myproject-N1oU6R8w\lib\site-packages\django\db\models\base.py", line 111, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class captcha.models.CaptchaStore doesn't declare an explicit app_label and isn't in an application in INSTALLED
_APPS.

Окончательная миграция



class Migration(migrations.Migration):

    dependencies = [
        ('boats', '0014_auto_20190419_1429'),
    ]

    operations = [
        migrations.AlterField(
            model_name='boatimage',
            name='boat_photo',
            field=models.ImageField(blank=True, upload_to=boats.utilities.get_timestamp_path, verbose_name='Boat photo'),
        ), # i removed help_text here
        migrations.AlterField(
            model_name='boatmodel',
            name='boat_mast_type',
            field=models.CharField(choices=[(None, 'Please choose rigging type'), ('SL', 'Sloop'), ('KE', 'Ketch'), ('YA', 'Yawl'), ('CK', 'Cat Ketch')], help_text='Please input boat rigging type', max_length=10, verbose_name='Boat rigging type'), # i added (None, 'Please choose rigging type') here
        ),
    ]

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Это был циркулирующий импорт.Решение было найдено, благодаря Alasdair.Я спрятал 2 импорта внутри метода ...

    def save(self, force_insert=False, force_update=False, using=None,
    update_fields=None):
        from articles.models import SubHeading, UpperHeading
        SubHeading.objects.update_or_create(name=self.boat_name, order=0,
                                            foreignkey_id=93)
        models.Model.save(self, force_insert=False, force_update=False, using=None,
                          update_fields=None)
0 голосов
/ 22 апреля 2019

Полагаю, вы только что удалили django-simple-captcha? Удалите "captcha" из INSTALLED_APPS, иначе Django все равно будет искать приложение.

И, конечно, удалите все CaptchaField с из ваших моделей.

...