在mongoengine中定义Many2Many,Many2One的正确方法是什么

时间:2019-06-19 05:49:08

标签: python mongodb flask-mongoengine

我正在为新项目创建一个数据模型,其中必须使用flask-mongoengine使用Many2Many,Many2One,One2Many参考。有人可以描述如何使用mongoengine定义Many2Many和其他参考字段吗?

1 个答案:

答案 0 :(得分:0)

以下是最常用的方法:

1)一对多,带有一个简单的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)Many-2-Many with a list(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()

请注意,@property是可选的,仅为方便起见