0

我有这个简单的模型:

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 类。我的问题是,我如何对其建模,以便:

  1. 当一个人被删除时,他们的所有评论也会被删除
  2. 当评论被删除(直接或间接)时,它会从其父级中删除
  3. 当节目或剧集被删除时,评论对象也会被删除

我习惯于在 MongoDB(和 SQLa,就此而言)手动完成所有这些工作,但我是 MongoEngine 的新手,我有点挣扎。任何帮助都是极好的!

4

1 回答 1

2

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

The main issue you have is global updates / removes aren't handled - so you'd have to ensure that the api you write in the api is used, to ensure a clean database state.

于 2012-12-07T08:52:41.263 回答