2015-10-06 18 views
0

我正在練習在django中使用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的定義,我發現當我刪除設備時,它會同時關聯表。那麼,我做對了嗎?

如果我定義user領域的reverse_delete_ruleRelativeTableCASCADE,將它也有自動當我刪除其相對user刪除?

deleting-embeddeddocument-with-filefield-from-listfield

mongoengine.fields.ReferenceField

回答

0

RelativeTable文檔的設備字段設置reverse_delete_rule=CASCADE,這意味着如果相應的設備被刪除,RelativeTable對象將在同一時間被刪除。

它與MySQL功能類似。當您使用SQL來定義關係字段時,例如,ManyToManyField,OneToOneField,ForeignKey。 A與B綁定。B被刪除,A也被刪除。