我有这个简单的模型:
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'))
如您所见,节目和剧集都可以有评论。最初,我试图嵌入评论,但我似乎遇到了一堵砖墙。所以我正在尝试将 Comments 作为 Document 类。我的问题是,我如何对其建模,以便:
- 当一个人被删除时,他们的所有评论也会被删除
- 当评论被删除(直接或间接)时,它会从其父级中删除
- 当节目或剧集被删除时,评论对象也会被删除
我习惯于在 MongoDB(和 SQLa,就此而言)手动完成所有这些工作,但我是 MongoEngine 的新手,我有点挣扎。任何帮助都是极好的!