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

问题描述

我正在尝试创建动态模型,并尝试以编程方式迁移它,并将模型注册到管理站点。我无法破解迁移API,但能够运行管理(makemigrations和migration命令)。我能够做到。但是,当我在管理员注册模型时,它显示为灰色,因此我必须重新启动服务器才能启用它。我无法以编程方式重新启动服务器。我正在使用Django 3.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

不是

"--database=="+db_name

try:
    ...
except:
    ...

不是

try:
    ...
catch:
    ...

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

也许可以从django-mutant那里获得启发,以启发您尝试做的事情,但我仍然不建议使用动态模型。