Python Django:如何迁移运行时生成的动态模型
在我的Django应用程序中,特定的用户输入将导致创建新模型。下面是我用来创建模型并注册它的代码Python Django:如何迁移运行时生成的动态模型,python,django,Python,Django,在我的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
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\u NewModel”不存在
这通常意味着新模型更改尚未迁移。如何在Django中迁移动态创建的模型以查看其相应的数据表?子流程可以使用migrate命令迁移您的模型。所以试试这个,它会有用的
import subprocess
command = 'python manage.py migrate'
proc = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = proc.communicate(command)
如果这有助于创建动态模型,也请阅读这篇文章。一个简单的解决方案适合我。创建动态模型后,我运行了
makemigrations
和migrate
管理命令,如下所示:
from django.core.management import call_command
call_command('makemigrations')
call_command('migrate')
首先谢谢你的回答!这表明你完全理解我的问题!所以我在重新加载URL之前(注册之后)和重新加载之后添加了一次。在这两种情况下,它仍然给出相同的错误。我做错了吗?您检查了stdout和stderr变量的输出了吗?