Как я могу импортировать класс из base.py в __init__.py в django 3.0. Кажется, он не может установить self.apps_ready в то время как реестр приложения - PullRequest
0 голосов
/ 11 января 2020

Django Версия - 3.0

BaseModel - base_models / models.py

# Create your models here.

from django.db import models


class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateField(auto_now=True)

base_models / __ init __. Py

from base_models.models import BaseModel

settings.py

INSTALLED_APPS = [
     ...,
     'base_models.apps.BaseModelsConfig',
     ...
]

Ошибка -

Файл "/Users/vaibhavsharma/vaibhav/workspace/rm-api/rm-api/base_models/__init__.py", строка 1, из base_models.models импортировать файл BaseModel "/Users/vaibhavsharma/vaibhav/workspace/rm-api/rm-api/base_models/models.py", строка 6, в классе BaseModel (models.Model): File " /Users/vaibhavsharma/vaibhav/workspace/rm-api/env/lib/python3.7/site-packages/django/db/models/base.py ", строка 107, в new app_config = apps.get_conisting_app_config (module) File "/Users/vaibhavsharma/vaibhav/workspace/rm-api/env/lib/python3.7/site-packages/django/apps/registry.py", строка 252, в get_contained_app_config Файл self.check_apps_ready () "/Users/vaibhavsharma/vaibhav/workspace/rm-api/env/lib/python3.7/site-packages/django/apps/registry.py", строка 135, в check_apps_ready вызывают AppRegistryNotReady ("Приложение s еще не загружены. ") django .core.exceptions.AppRegistryNotReady: Приложения еще не загружены.

1 Ответ

0 голосов
/ 13 января 2020

Я нашел ответ, вы не можете сделать это в Django 3.0. Похоже, что в этой версии при каждой инициализации приложения функция self.check_apps_ready () запускается из apps / registry.py, которая сама проверяет INSTALLED_APPS из app / settings.py.

Так вот как я использовал свой BaseModel.

  1. python manage.py startapp base .
  2. удален файл models.py из base app
  3. создал каталог models в том же приложении.
  4. создал файл __ init __. py в base / models / .
  5. Инициализировал мои модели в base.py .
  6. Включил BaseModel в init .py (base / models / __ init__.py) от from .base import BaseModel
  7. Наконец, в base / __ init__.py включите from .models import BaseModel
  8. Включите BaseModel в любом месте приложения с помощью from base import BaseModel.

done!

Ссылка - https://docs.djangoproject.com/en/3.0/topics/db/models/#organizing -модели в упаковке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...