首页 > 解决方案 > 是否有为模型声明计算键的模式?

问题描述

我希望将特定的 ndb.Model 键的字符串 id 自动设置为两个模型属性的串联。这两个属性是一次性写入的,尽管其他属性可能会改变。这种方法有助于确保实体对于这两个属性是唯一的。

下面是这个类的样子:

class Foo(ndb.Model):
  bar: ndb.StringProperty()
  baz: ndb.StringProperty()

一个实体可以这样构造:

foo = Foo(id='bar-baz', bar='bar', baz='baz')
foo.put()

是否有一种模式可以在模型类本身中自动设置该 ID,类似于 ComputedProperty?

标签: python-3.xgoogle-cloud-datastoreapp-engine-ndbgoogle-app-engine-python

解决方案


您可以使用该_pre_put_hook函数将键名设置为 put 的一部分。这也是验证 bar & baz 不会作为更新的一部分而更改的地方。


推荐阅读