【问题标题】:does python's append work with ndb.StringProperty(repeated=True)?python 的追加是否与 ndb.StringProperty(repeated=True) 一起使用?
【发布时间】:2016-02-27 23:37:30
【问题描述】:

快速提问: 我知道 ndb.StringProperty(repeated=True) 在谷歌数据存储中,被视为 python 中的列表。但我想知道的是,假设你有这个类:

class Customer(ndb.Model):
    name = StringProperty()
    items = StringProperty(repeated=True)

然后你创建一个实例:

custmr = Customer()
custmr.name = "Sam"
custmr.items = ['python','java','ruby']
custmr.put()

并保存它...然后稍后检索它...

q = Customer.query.filter(name="Sam")
custmr = q.get()

我可以这样做吗...

custmr.items.append('perl')
custmr.put()

并更新列表??

如果没有,请问我该怎么做?

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 可怜的 sam 得到 perl
  • @Goyo 在看到您的问题后,我为此创建了一个全新的虚拟项目。你可以改变它。所以是的,追加有效,扩展和所有其他的也有效

标签: python google-app-engine google-cloud-datastore


【解决方案1】:

The docs 说你可以就地改变列表:

更新重复的属性时,您可以为其分配一个新列表或更改现有列表。分配新列表时,会立即验证列表项的类型。无效的项目类型(例如,将[1, 2] 分配给上面的art.tags)会引发异常。当您更改列表时,不会立即验证更改。相反,将在您将实体写入数据存储区时验证该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多