【问题标题】:Hardcoding values into ndb model将值硬编码到 ndb 模型中
【发布时间】:2015-06-21 02:35:42
【问题描述】:

我正在使用 python 在 webapp2 框架中工作,我有一个父类(Examplestart),它具有三个属性:

variable = ndb.KeyProperty(kind=DBUser)
time = ndb.DateTimeProperty(auto_now_add=True)
statement = ndb.StringProperty(indexed=False)

示例有两个子类(Example1 & Example2),我想在 Examplestart 中硬编码属性:

my_example = DBExamplestart(
   variable = '776',
   statement = ['First']
)
my_example.put()

我应该在我的文件中的何处插入此代码?如果我在 Examplestart 中使用它,则代码不起作用。 my_example 与类 Example1 相关。

【问题讨论】:

  • 什么?如果您想在数据存储中创建实体,只需执行此操作。完成后,您无需再次创建它,它已经存在。
  • @Daniel Roseman:实体已经存在,我只想通过给出值来测试实体。我该怎么做?

标签: python google-cloud-datastore data-modeling app-engine-ndb webapp2


【解决方案1】:

您可以在子实体中设置默认值:

class DBExamplestart(Examplestart):
    variable = ndb.KeyProperty(kind=DBUser, default=ndb.Key(DBUser, 776))
    statement = ndb.StringProperty(indexed=False, default='First')

如果您有更复杂的事情要做(例如检索特定的 id,而不是 776),您可以查看Model Hooks。 例如,_pre_put_hook() 将允许您在持久化实体之前对其执行任何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多