Django:动态模型在创建后消失

2024-09-30 05:18:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个模型。型号A和型号B

每当管理员用户对模型a的对象进行更改时,他们都会单击“保存”按钮。你知道吗

所以,当“save”发生时,我想发送一个post\u save信号,创建一个从model\u B继承的模型

当我像下面这样做的时候,模型确实被创建了,但是它们在刷新页面之后消失了,有时它们在刷新页面之后再次出现。但他们并不总是在名单上。(奇怪,我知道!)你知道吗

因此,post\u save信号的代码如下所示:

post_save.connect(create_new_model, sender=Model_A)

我的“创建新模型”是这样的:

def create_new_model(sender, instance, **kwargs):
    attrs = {
        'field1': models.CharField(max_length=40),
        'field2': models.CharField(max_length=40),
        '__module__': 'appname.models'
    }

    from appname.models import create_model, admin_options, modelsList

    mod = create_model(name=str(len(modelsList)),
                       fields=attrs,
                       admin_opts=admin_options
                       )
    modelsList.append(mod)

最后,创建动态模型的函数(create\u model)如下所示:

def create_model(name, fields=None, admin_opts=None):

    from appname.models import Model_A

    attrs = fields

    model = type(name, (Model_A,), attrs)

    if admin_opts is not None:
        admin.site.register(model, admin_opts)

    return model

有人知道为什么会发生这种鬼鬼祟祟的事吗?你知道吗


Tags: name模型nonefieldsmodeladminmodelssave
1条回答
网友
1楼 · 发布于 2024-09-30 05:18:33

这可能是因为您的服务器正在使用多个进程。任何动态类都只存在于创建它的进程中;即使这样,它也不会在进程重新启动时持久存在。你知道吗

我不知道你的用例在这里是什么,但这肯定不是这样做的方式。你知道吗

相关问题 更多 >

    热门问题