Извините, я новичок на этом сайте и не вижу, где комментировать ответ?
Во всяком случае, я исправил конкретную проблему, которая спровоцировала оригинальный пост. Хотя сериализация данных все еще неоптимальна, что происходит при записи, мне удалось убедиться, что назначение объектов модели в качестве элементов в сеансе будет работать так, как ожидалось. Вместо того, чтобы переписывать сериализацию (это было бы серьезным переписыванием), я вместо этого решил определить, когда модель вставляется как элемент данных сеанса, и установить для него свойство ReferenceProperty. Это означает, что объектам модели вообще не нужно накладываться на сериализацию.
Если объект, с которым связан ReferenceProperty, удаляется, ReferenceProperty в сеансе будет удален при попытке его загрузки. Это означает, что вам придется перехватывать исключения, такие как KeyError, которые вызываются Session, как должен делать словарь. Я надеюсь, что это достаточно интуитивно понятно, но я открыт для любых комментариев Я проверю эту страницу снова несколько раз в течение следующих нескольких недель.