无法以编程方式创建、迁移模型、将模型注册到管理员并重新启动django服务器

无法以编程方式创建、迁移模型、将模型注册到管理员并重新启动django服务器,django,django-models,reload,django-migrations,Django,Django Models,Reload,Django Migrations,我正在尝试创建动态模型,尝试以编程方式迁移它,并将模型注册到管理站点。我无法侵入迁移api,但能够运行manage(makemigrations和migrate命令)。我能做到。但是当我在管理员中注册模型时,它显示为灰色,我必须重新启动服务器才能启用它。我无法以编程方式重新启动服务器。我正在使用Django3.0.3。有人帮忙吗 model = type(m.get("name"), (models.Model,), m.get("attrs")) 我正

我正在尝试创建动态模型,尝试以编程方式迁移它,并将模型注册到管理站点。我无法侵入迁移api,但能够运行manage(makemigrations和migrate命令)。我能做到。但是当我在管理员中注册模型时,它显示为灰色,我必须重新启动服务器才能启用它。我无法以编程方式重新启动服务器。我正在使用Django3.0.3。有人帮忙吗

model = type(m.get("name"), (models.Model,), m.get("attrs"))
我正在以编程方式启用此处模型列表中的模型

def migrate():
    from django.core import management
    from django.db.migrations.recorder import MigrationRecorder

    db_name = "programaticfetchfromdatabase"
    app_label = "programaticfetchfromdatabase"
    try:
        management.call_command("startapp", app_label)
        management.call_command("makemigrations", app_label)
        management.call_command("migrate", app_label, MigrationRecorder.Migration.objects.filter(
                app=app_label).last().__dict__.get("name"), "--database=="+db_name)

        return True
    except:
        # raise Exception("Unable to perform migration)
        return False

if migrate():
    from django.contrib import admin
    # If register and dont restart the model is grayed out
    admin.site.register(model)
   
    # so restarting server here
    # restart server (WHICH API do I use here)
    
    from django.utils import autoreload
    autoreload.restart_with_reloader()

    # I get port already in use error


我想知道为什么动态管理员注册后模型会变灰,或者我想以编程方式重新加载django服务器

"--databe="+db_name
不是

是的

不是

最重要的是,您不希望使用django runserver在生产网站上运行服务器


也许可以看看django突变体,从中获得关于您尝试做什么的灵感,但我仍然不建议使用动态模型。

谢谢您更新到except。我使用其他语言,上面的代码并不精确。道歉。w、 r.t django突变体我确实是从这个开始的,我会再看一遍。我刚刚看了一下github项目,除了以不同的方式完成之外,看起来几乎是一样的。让我检查一下。为了让我继续讨论这个问题,哪个api有助于正确地重新加载服务器,第二个想法是什么api跟踪模型注册到管理员,这样我就不必重新启动服务器了?有什么帮助吗?@user:8291840-感谢您的帮助-“您不想使用django runserver在生产环境中运行您的服务器”。我现在使用Gunicorn/Uvicorn的HUP信号逐个顺序重新加载工人。这部分间接地解决了我的问题。一个简单的问题。我应该使用什么api来让makemigrations(false)运行/创建以编程方式创建的模型的迁移-
model=type(m.get(“name”),(models.model,),m.get(“attrs”)
。Makemigrations(伪Makemigrations)不迁移以编程方式创建的模型。有什么帮助吗?你以前使用过这个Django API吗?有什么资源或帮助吗?很遗憾没有,对不起。
"--database=="+db_name
try:
    ...
except:
    ...
try:
    ...
catch:
    ...