Могу ли я найти все определенные базовые модели в App Engine? - PullRequest
0 голосов
/ 01 декабря 2009

Учитывая классоподобные отношения:

class A(db.Model):
    pass

class B(A):
    pass

Могу ли я получить весь базовый класс? Запрос:

models.A.all().fetch(1)

возвращает пустой список.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2009

Хранилище данных изначально не поддерживает этот тип полиморфизма - но вы можете использовать класс polymodel для этого Просто наследуйте от PolyModel вместо Model, и все будет вести себя более или менее так, как вы ожидаете.

1 голос
/ 01 декабря 2009

Хранилище данных не записывает наследование как таковое: оно хранит B сущности как имеющие вид B. Вы можете получить все (прямые, правильные) подклассы A с A.__subclasses__() (если вы хотите также косвенные подклассы, вам нужно будет делать то же самое с каждым из них, и так далее, рекурсивно, пока вы не прекратите получать подклассы ) и выполните все .all запросы к ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...