Reverse_delete_rule循环导入

Reverse_delete_rule circular import

如果我有两个模型,UserAddress,并且它们像这样相互引用:

# usermodel.py
from address import Address
from mongoengine import *
class User(Document):
    name = StringField()
    address = ReferenceField(Address)

# address.py
from mongoengine import *
class Address(Document):
     owner = ReferenceField('User', reverse_delete_rule=2)

我收到错误消息:

NotRegistered('`User` has not been registered in the document registry.
Importing the document class automatically registers it, has it been imported?',)

我可以在一个文档上设置信号,在另一个文档上设置 reverse_delete_rule 吗?我相信这是因为 reverse_delete_rule 需要注册文档。

这可以通过使用 reverse_delete_rule 的替代符号来解决:

User.register_delete_rule(Address, 'owner', CASCADE)

因此文档将像这样更新:

# usermodel.py
from address import Address
from mongoengine import *
class User(Document):
    name = StringField()
    address = ReferenceField(Address)

User.register_delete_rule(Address, 'owner', CASCADE)

# address.py
from mongoengine import *
class Address(Document):
     owner = ReferenceField('User')