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
设置.py
INSTALLED_APPS = [
...,
'base_models.apps.BaseModelsConfig',
...
]
错误-
文件"/Users/vaibhavsharma/vabhav/workspace/rm-api/rm-api/base_models/__init__.py",第1行,位于从base_models.models导入BaseModel文件"/Users/vaibhavsharma/vabhav/workspace/rm-api/rm-api/base_models/models.py",第6行,位于类BaseModel(models.Model):文件"/Users/vaibhavsharma/vabhav/workspace/rmApi/env/lib/python3.7/site packages/django/db/models/base.py",第107行,在newapp_config=apps.get_containing_app_config(module)中文件"/Users/vaibhavsharma/vabhav/workspace/rm-api/env/lib/python3.7/site packages/django/apps/registry.py",第252行,在get_containing_app_config中self.check_apps_ready()check_apps_ready中的文件"/Users/vaibhavsharma/vabhav/workspace/rmApi/env/lib/python3.7/site packages/django/apps/registration.py",第135行引发AppRegistryNotReady("尚未加载应用程序。")django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
我找到了答案,在Django 3.0中无法做到这一点。在这个版本中,似乎在每个应用程序初始化self-check_apps_ready()函数都是从app/registry.py运行的,它本身是从app/settings.py的INSTALLED_apps检查的。
下面是我如何使用BaseModel的。
- python manage.py startappbase
- 已从基础应用程序中删除models.py文件
- 在同一应用程序中创建了模型目录
- 在base/models/中创建了__init__.py文件
- 在base.py中初始化我的模型
- 包含init.py(base/models/__init__.py)中的BaseModel
from .base import BaseModel
- 最后在base/__init__.py中包含
from .models import BaseModel
- 通过
from base import BaseModel
在应用程序中的任何位置包含BaseModel
完成!
参考-https://docs.djangoproject.com/en/3.0/topics/db/models/#organizing-一揽子模型