как правильно определить Many2Many, Many2One в mongoengine - PullRequest
1 голос
/ 19 июня 2019

Я создаю модель данных для моего нового проекта, где мне нужно использовать ссылки Many2Many, Many2One, One2Many с использованием flask-mongoengine.Может кто-нибудь описать, как определить Many2Many и другие ссылочные поля с помощью mongoengine?

1 Ответ

0 голосов
/ 19 июня 2019

Ниже приведены наиболее распространенные способы сделать это:

1) 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) Многие-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()

Обратите внимание, что @property не является обязательным, просто для удобства

...