Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何迁移运行时生成的动态模型_Python_Django - Fatal编程技术网

Python 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

在我的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\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变量的输出了吗?