【问题标题】:Inheritance or ownership between ndb entities in google Datastore [duplicate]google Datastore中ndb实体之间的继承或所有权[重复]
【发布时间】:2017-07-03 07:08:12
【问题描述】:

我正在开发一个简单的在线数据库,用于在艺术家之间共享技术设备。

我想让一个类 User() 拥有其他类的实体,例如 Lamp()Speaker()

似乎我在使用 db 时可以使用ReferenceProperty,但是当我查看ndb 的文档时,我似乎有点困惑,因为我找不到ReferenceProperty

所以,如果使用ndb,我想让Lamp() 类的实体拥有User() 类的实体,通过引用User() 的id,我该怎么办?希望它像我在下面写的那样,尽管我非常确信我在下面写的实际上不起作用:

class User(ndb.Model):
    name = ndb.StringProperty()
    email = ndb.....

class Lamp(db.Model):
    owner = db.ReferenceProperty(User)

【问题讨论】:

  • ndb 中db.ReferenceProperty 的替换是ndb.KeyProperty

标签: google-app-engine reference app-engine-ndb datastore


【解决方案1】:

你要找的是ndb.KeyProperty(kind="User"),如https://cloud.google.com/appengine/docs/python/ndb/entity-property-reference所示

例如,如果您有一个用户 u 并且想要 u 拥有的所有灯,您可以通过这种方式获得它们:

lamps = Lamp.query(Lamp.owner == u.key).fetch()

如果你有一盏灯l 并想得到l 的所有者,你可以这样得到:

owner = l.owner.get()

您也可以使用祖先来引用您的类而不指定KeyProperty,如https://cloud.google.com/appengine/docs/python/ndb/queries 所示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2021-04-05
    • 2017-04-13
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多