我希望使用manage.py startapp newapp --template=quicktemplate
来自动注册应用程序并在该应用程序内以编程方式创建Django模型。我的想法过程如下,但我只是开始自动注册应用程序。但是,然后,整个过程就显得太棘手了,我非常欢迎任何Django批准的方式。我还寻找了migrations.CreateModel
API,但这对于我的新手来说太复杂了。
在我的整个项目范围的settings.py中,我扫描不是非应用程序文件夹的文件夹,即名为quick
的项目级别文件夹。在这里,我将所有新文件夹作为应用程序自动注册到INSTALLED_APPS
中。可能我需要重新启动Django服务器才能重新加载设置文件,但现在我同意了。
# quick/settings.py
INSTALLED_APPS = [
... # django contribs
]
NON_APP_FOLDERS = ['quick', 'quicktemplate', 'media']
APP_LIST = [ app for app in next(os.walk('.'))[1] if
app not in NON_APP_FOLDERS ]
INSTALLED_APPS = INSTALLED_APPS + APP_LIST
在我的快速模板中,我创建了初始模型,还更新了apps.py以进行模型初始化。
# quicktemplate/models.py
# declare model that will be initialized once upon app creation
from django.db import models
class AppProfile (models.Model):
name = models.CharField(max_length=100)
...
# quicktemplate/__init__.py
# to allow AppConfig ready() to be called
default_app_config = '{{ app_name }}'.apps.'{{ camel_case_app_name }}'
...
#quicktemplate/apps.py
from django.apps import AppConfig
class {{ camel_case_app_name }}Config(AppConfig):
name = {{ app_name }}
def ready(self):
# NOT SURE HOW TO INITIALIZE 'AppProfile' MODEL IN 'models.py'
总而言之,我需要知道ready(self)
函数中要使用哪些语句来以编程方式创建模型。但是,非常欢迎任何经过改进和清洁的完整解决方案。