0
假设我有2个模型。 Model_A和Model_B。Django:动态模型在创建后消失
每当管理员用户对model_A的对象进行更改时,都会点击“保存”按钮。
因此,当发生“保存”时,我想发送post_save信号,创建一个从Model_B继承的模型。
当我这样做的时候,模型确实会被创建,但是在刷新页面后它们会消失,有时它们会在刷新后再次出现。但他们并不总是留在名单上。 (奇怪,我知道了!)
所以对于post_save信号的代码是像这样:
post_save.connect(create_new_model, sender=Model_A)
我create_new_model就像这样:
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_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
有没有人知道为什么这个偷偷摸摸的事情可能会发生?
有道理。有没有办法保持这些模型? – cookiedough
不是。您需要在流程启动时重新创建所有内容,例如在AppConfig.ready中。你为什么这样做? –
Model_B的每个实例都从Amazon S3中检索特定的一组数据。所以我想让用户说出他们想从桶中获取什么数据。 – cookiedough