Yon*_*ono 5 python django django-models python-3.x
我有一个Django项目,我想生成一些对象(来自模型)
我想要的是:独立的 Python 脚本来创建一堆对象和/或过滤,删除.
在导入模型from apps.base.models import MyModel
并使用之前的StackOverflow问题设置配置后,我无法运行脚本.
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
import django
django.setup()
from apps.base.models import MyModel
Run Code Online (Sandbox Code Playgroud)
请注意,这是在Django 2.0.6版[Django 2.0+]上.
已使用正确的设置,(即 myProject.settings)
正确配置其他所有内容后,我收到以下错误:
RuntimeError: Model class apps.base.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.设置:
base.py:https://pastebin.com/MNcitE4U
development.py:https://pastebin.com/JAHqxwRM
完整的GitHub链接在这里:https://github.com/teratzu/Razred-Management
我再次git clone对您的 Django 项目的存储库进行了操作并使其正常工作,而无需重新设计您的项目结构,方法如下:
settings.BASE_DIR变量通常,Django 项目的设置文件的文件路径是,projectname/settings.py但对于单独的设置,它是projectname/settings/<env_name>.py.
因此,BASE_DIR需要重新设计:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Run Code Online (Sandbox Code Playgroud)
到:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
Run Code Online (Sandbox Code Playgroud)
考虑项目根目录和设置文件之间的额外目录。
INSTALLED_APPS:您的应用程序的虚线位置BASE_DIR是apps.base。将当前声明 替换base为apps.base。
如果虚线路径出现任何错误,请检查回溯,因为它将指出问题。例如,您的 currenturls.py可能会导致问题,因为有一条虚线路径,base.urls而它应该是显式的apps.base.urls. 例如:
urlpatterns = [
url(r'', include('base.urls')),
...
]
Run Code Online (Sandbox Code Playgroud)
至以下内容:
urlpatterns = [
url(r'', include('apps.base.urls')),
...
]
Run Code Online (Sandbox Code Playgroud)
履行./manage.py makemigrations && ./manage.py migrate。
另外,作为旁注,migrations目录不应该位于.gitignore. 阅读:我应该在 .gitignore 文件中添加 Django 迁移文件吗?
这样我就可以在 Django 项目的根目录下运行以下脚本,没有错误:
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DzenanElvir.settings.base")
django.setup()
from apps.base.models import ModelRazred
Run Code Online (Sandbox Code Playgroud)