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