Python 在这种情况下,如何使用MongoEngine级联删除?

Python 在这种情况下,如何使用MongoEngine级联删除?,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我有一个简单的模型: from mongoengine import * from datetime import datetime class Person(Document): firstname = StringField(required=True) @property def comments(self): return Comment.objects(author=self).all() class Comment(Document):

我有一个简单的模型:

from mongoengine import *
from datetime import datetime

class Person(Document):
    firstname = StringField(required=True)

    @property
    def comments(self):
        return Comment.objects(author=self).all()

class Comment(Document):
    text = StringField(required=True)
    timestamp = DateTimeField(required=True, default=datetime.now())
    author = ReferenceField('Person', required=True, reverse_delete_rule=CASCADE)

class Program(Document):
    title = StringField(required=True)
    comments = ListField(ReferenceField('Comment'))

class Episode(Document):
    title = StringField(required=True)
    comments = ListField(ReferenceField('Comment'))
正如你所看到的,节目和剧集都可以有评论。起初,我试图嵌入评论,但似乎遇到了麻烦。因此,我尝试将注释作为文档类。我的问题是,如何对其建模,以便:

  • 当一个人被删除时,他们的所有评论也会被删除
  • 删除注释时(直接或间接),注释将从其父注释中删除
  • 删除节目或插曲时,评论对象也会被删除

  • 我习惯于在MongoDB(以及SQLa)中手动完成所有这些工作,但我是MongoEngine的新手,我有点挣扎。任何帮助都会很棒

    如果不编写应用程序代码来处理逻辑,并非所有这些都是可能的。我会写信号来处理一些边缘情况

    您面临的主要问题是没有处理全局更新/删除-因此您必须确保使用在api中编写的api,以确保数据库状态干净