在我的Django应用程序中,特定的用户输入将导致创建新模型。这是我用来创建模型并注册它的代码。
model = type(model_name, (ExistingModel,), attrs)
admin.site.register(model, admin_options)
from django.core.urlresolvers import clear_url_caches
from django.utils.module_loading import import_module
reload(import_module(settings.ROOT_URLCONF))
clear_url_caches()
这成功创建了新模型,但是,当我单击模型以查看管理页面上的表时,我收到以下错误:
关系“ExistingModel_NewModel”不存在
这通常意味着尚未迁移新模型更改。如何在Django中迁移动态创建的模型以查看相应的数据表?
答案 0 :(得分:11)
一个简单的解决方案对我有用。在创建动态模型后,我最终运行了makemigrations
和migrate
管理命令:
from django.core.management import call_command
call_command('makemigrations')
call_command('migrate')
答案 1 :(得分:2)
Subprocess可以使用migrate命令迁移模型。所以尝试一下它会起作用
import subprocess
command = 'python manage.py migrate'
proc = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = proc.communicate(command)
另请阅读此https://code.djangoproject.com/wiki/DynamicModels如果它可以帮助创建动态模型