Сохранение древовидной структуры в Mongodb и установка нулевого значения ReferenceField для корневого узла выдает ошибку - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть приложение, которое использует MongoDB через Mongoengine в python и flask, и мне приходится хранить в нем древовидную структуру. Когда дело доходит до хранения корневого элемента, у которого нет родителя, мое приложение сохраняет родителя как None вместо того, чтобы не передавать значение. Однако mongoengine выдает ошибку You can only reference documents once they have been saved to the database.

Моя схема документа следующая:

class BaseModel(mongoengine.DynamicDocument):
    meta = {
        'abstract': True,
        'allow_inheritance': True
    }

    created = mongoengine.DateTimeField(default=datetime.now)
    edited = mongoengine.DateTimeField(default=datetime.now)
    # ...

class Node(BaseModel):
    title = mongoengine.StringField(max_length=512)
    parent = mongoengine.ReferenceField('self', default=None)
    children = mongoengine.ListField(mongoengine.ReferenceField('self'), default=[])
    # ... 

Копаясь в документации, я пока ничего не нашел по этой проблеме, и я хотел бы спросить вас, ребята, есть ли какое-нибудь решение этой проблемы. Для меня обязательно определить один или несколько корневых элементов (один без родителя) в моей базе данных.

...