Django 2以编程方式创建模型

时间:2018-09-01 00:22:07

标签: django

我希望使用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)函数中要使用哪些语句来以编程方式创建模型。但是,非常欢迎任何经过改进和清洁的完整解决方案。

0 个答案:

没有答案