【发布时间】:2023-03-18 17:00:01
【问题描述】:
我有一些模型共享一组公共属性,我在其他模型继承的基础模型类中定义了这些属性:
class BaseUser(ndb.Model):
name = ndb.StringProperty()
class DerivedUserA(BaseUser):
# some additional properties...
class DerivedUserB(BaseUser):
# some additional properties...
在其他一些模型中,我需要引用任何BaseUser-derived 模型:
class MainModel(ndb.Model):
user = ndb.KeyProperty(kind = BaseUser)
但是,当我尝试将 DerivedUserA 实体键设置为 MainModel.user 属性时,GAE 会引发 BadValueError 声明它期望使用类型为 BaseUser 的键,但得到的是 DerivedUserA。
如果我从 MainModel 中删除 kind 参数,它会起作用:
class MainModel(ndb.Model):
user = ndb.KeyProperty()
我可以接受,但我宁愿进行检查以确保我没有尝试在 MainModel.user 属性中保存任何类型的实体。有没有办法做到这一点?
【问题讨论】:
标签: google-app-engine app-engine-ndb