在 mongoengine 中定义 Many2Many、Many2One 的正确方法是什么
what is correct way to define Many2Many, Many2One in mongoengine
我正在为我的新项目创建一个数据模型,我必须使用 flask-mongoengine 使用 Many2Many、Many2One、One2Many 引用。有人可以描述如何使用 mongoengine 定义 Many2Many 和其他参考字段吗?
以下是最常用的方法:
1) 1-to-many 带有一个简单的 ReferenceField
class Client(Document):
name = StringField()
@property
def account(self):
return Account.objects(client=self).get()
class Account(Document):
client = ReferenceField(Client)
bob = Client(name='Bob').save()
acc1 = Account(client=bob).save()
acc2 = Account(client=bob).save()
2) 带有列表的多对多 (ReferenceField)
class Client(Document):
name = StringField()
@property
def accounts(self):
return Account.objects(client=self)
class M2MAccount(Document):
clients = ListField(ReferenceField(Client))
bob = Client(name='Bob').save()
john = Client(name='John').save()
m2m_acc = M2MAccount(clients=[bob, john]).save()
注意 @属性 是可选的,只是为了方便
我正在为我的新项目创建一个数据模型,我必须使用 flask-mongoengine 使用 Many2Many、Many2One、One2Many 引用。有人可以描述如何使用 mongoengine 定义 Many2Many 和其他参考字段吗?
以下是最常用的方法:
1) 1-to-many 带有一个简单的 ReferenceField
class Client(Document):
name = StringField()
@property
def account(self):
return Account.objects(client=self).get()
class Account(Document):
client = ReferenceField(Client)
bob = Client(name='Bob').save()
acc1 = Account(client=bob).save()
acc2 = Account(client=bob).save()
2) 带有列表的多对多 (ReferenceField)
class Client(Document):
name = StringField()
@property
def accounts(self):
return Account.objects(client=self)
class M2MAccount(Document):
clients = ListField(ReferenceField(Client))
bob = Client(name='Bob').save()
john = Client(name='John').save()
m2m_acc = M2MAccount(clients=[bob, john]).save()
注意 @属性 是可选的,只是为了方便