Ich habe einen Workaround gefunden, andere Orte schlagen vor, die Kinder eines vorhandenen Layouts zu aktualisieren, anstatt den gesamten curdoc() zu aktualisieren.
Ich tat das, aber ich musste ein bisschen erweitern, um dies aus einem Dokument in einem JSON-String gespeichert zu tun.
Ich hatte das document
Attribut aller Modelle aus dem importierten Dokument curdoc() statt wechseln (sonst beschwert sich, dass die Modelle zu einem anderen Dokument gehören)
unter der Annahme, dass das Dokument ich importieren und das aktuelle Dokument beide haben nur eine Wurzel:
new_doc = Document.from_json_string(json_string)
new_grid_models = collect_models(new_doc.roots[0])
for elem in new_grid_models:
try:
elem.document = curdoc()
except AttributeError:
elem._document = curdoc()
new_children = new_doc.roots[0].children
del new_doc
grid.children = new_children
, dass nach der python Rückrufe müssen die entsprechenden importierten Modellen wieder betroffen sein.
Ich habe ein Beispiel app hier oben: save_and_load app on Bitbucket