在 Django 中通过 mongoengine 自动删除引用对象
Automatically remove referencing objects on deletion by mongoengine in django
我正在练习在 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
是 RelativeTable
中的 CASCADE
,当我删除它的相关 user
时,它是否也会自动删除?
deleting-embeddeddocument-with-filefield-from-listfield
当你的RelativeTable
文档的device字段设置为reverse_delete_rule=CASCADE
时,表示如果删除对应的Device,RelativeTable
对象也会同时删除
它类似于 MySQL 功能。当您使用 SQL 定义关系字段时,例如 ManyToManyField、OneToOneField、ForeignKey。
A绑定B,B被删除,A也被删除
我正在练习在 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
是 RelativeTable
中的 CASCADE
,当我删除它的相关 user
时,它是否也会自动删除?
deleting-embeddeddocument-with-filefield-from-listfield
当你的RelativeTable
文档的device字段设置为reverse_delete_rule=CASCADE
时,表示如果删除对应的Device,RelativeTable
对象也会同时删除
它类似于 MySQL 功能。当您使用 SQL 定义关系字段时,例如 ManyToManyField、OneToOneField、ForeignKey。 A绑定B,B被删除,A也被删除