У меня есть несколько моделей с общим набором свойств, которые я определил в классе базовой модели, от которого наследуются другие модели:
class BaseUser(ndb.Model):
name = ndb.StringProperty()
class DerivedUserA(BaseUser):
# some additional properties...
class DerivedUserB(BaseUser):
# some additional properties...
В какой-то другой модели мне нужна ссылка на любую модель, производную от BaseUser
:
class MainModel(ndb.Model):
user = ndb.KeyProperty(kind = BaseUser)
Однако, когда я пытаюсь установить ключ объекта DerivedUserA
для свойства MainModel.user
, GAE выдает BadValueError
, заявляя, что он ожидает ключ с типом BaseUser
, но получил DerivedUserA
.
Если я удалю аргумент kind
из своего MainModel
, он сработает:
class MainModel(ndb.Model):
user = ndb.KeyProperty()
Я мог бы с этим смириться, но я бы предпочел иметь проверку, чтобы убедиться, что я не пытаюсь сохранить какую-либо сущность в свойстве MainModel.user
. Есть ли способ сделать это?