Как отфильтровать ссылочное поле унаследованного класса mongoengine - PullRequest
0 голосов
/ 23 февраля 2020

Допустим, у меня есть модель A, модель B и модель C

class ModelA(ModelB):
data = mongoengine.ReferenceField()

class ModelB(Document):
customer = mongoengine.ReferenceField(ModelC)

class ModelC(Document):
name = mongoengine.stringField()

Я могу получить доступ к этому. models.ModelA.objects (customer = customer)

Теперь я пытаюсь отфильтровать, где customer.name совпадает с именем, которое я передаю. Возможно ли это с помощью фильтров mongoengine?

I попытался использовать этот метод, но он не будет работать models.ModelA.objects (customer__name = name)

1 Ответ

0 голосов
/ 24 февраля 2020

Нет, это невозможно, поскольку в mongodb не существует объединений, вам нужно сделать это в 2 шага, сначала запросить клиента на основе имени, а затем запросить ModelA на основе результата первого запроса.

customer = ModelC.objects.get(name=your_name)
ModelA.objects(customer=customer)
...