在django中通过mongoengine自动删除删除时的引用对象

时间:2015-10-06 12:16:36

标签: python django reference mongoengine

我练习在django中使用mongoengine。

class RelativeTable(Document):
    user = fields.ReferenceField(CustomUser)
    device = fields.ReferenceField(Device, reverse_delete_rule=CASCADE)

    meta = {
        'collection': 'relative_table',
        'allow_inheritance': True,
        'indexes': [
            {'fields': ['user'], 'unique': True, 'sparse': True},
            {'fields': ['device'], 'unique': True, 'sparse': True},
        ]
    }

通过多次练习。根据我对Document的定义,我发现当我删除设备时,它会同时出现RelativeTable。那么,我做对了吗?

如果我在user中定义reverse_delete_rule字段CASCADERelativeTable,我删除其相对user时是否也会自动删除?

deleting-embeddeddocument-with-filefield-from-listfield

mongoengine.fields.ReferenceField

1 个答案:

答案 0 :(得分:0)

RelativeTable文档的设备字段设置为reverse_delete_rule=CASCADE时,表示如果删除了相应的设备,则RelativeTable对象将同时被删除。

它类似于MySQL功能。当您使用SQL来定义关系字段时,例如,ManyToManyField,OneToOneField,ForeignKey。 A与B绑定.B被删除,A也被删除。