Reverse_delete_rule循环导入
Reverse_delete_rule circular import
如果我有两个模型,User
和 Address
,并且它们像这样相互引用:
# 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')
如果我有两个模型,User
和 Address
,并且它们像这样相互引用:
# 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')