gpt4 book ai didi

python - 如何将临时信息附加到我的 appengine ndb 模型实例?

转载 作者:行者123 更新时间:2023-12-01 05:09:41 25 4
gpt4 key购买 nike

我正在尝试为我的模型设置属性,

class Foo(ndb.Model):
name = ndb.StringProperty()
  1. 从内存缓存中检索 Foo 对象
  2. 如果不在memcache中,则从数据库中查询。 在这里,我想将附加信息附加到 Foo 实例 foo.special_name = "don't persist this"
  3. 将此对象从内存缓存传递到我的自定义 JsonEncoder
  4. 将此对象转储到字典中,foo = {name:"hello",special_name:"don't persist this"}

AFAIK,我无法设置不是字段的 ndb.Model 类的属性。

我害怕使用ndb.Expando,因为我担心这个对象会被持久化并且special_name会被保存到我的数据库中。

foo 添加临时一次性值的最简洁方法是什么?

编辑:

>>> class Foo(ndb.Model):
name = ndb.StringProperty()
>>> f = Foo()
>>> f.put()
Key('Foo', 26740114379063)
>>> f.bar = 123
>>> f
Foo(name=None)
>>> f.bar
Traceback (most recent call last):
File "/base/data/home/apps/shell/1.335852500710379686/shell.py", line 267, in get
exec compiled in statement_module.__dict__
File "<string>", line 1, in <module>
AttributeError: 'Foo' object has no attribute 'bar'
>>> setattr(f, 'bar', 123)
>>> f
Foo(name=None)
>>> f.bar
Traceback (most recent call last):
File "/base/data/home/apps/shell/1.335852500710379686/shell.py", line 267, in get
exec compiled in statement_module.__dict__
File "<string>", line 1, in <module>
AttributeError: 'Foo' object has no attribute 'bar'
>>> setattr(f, 'bar', 123)
>>> getattr(f, 'bar')
Traceback (most recent call last):
File "/base/data/home/apps/shell/1.335852500710379686/shell.py", line 267, in get
exec compiled in statement_module.__dict__
File "<string>", line 1, in <module>
AttributeError: 'Foo' object has no attribute 'bar'

最佳答案

"I can't set attributes of ndb.Model classes that are not fields."

你为什么会这么想?模型实例只是对象,与 Python [*] 中的任何其他对象一样,您可以根据需要在它们上设置任意属性。

[*]:(只要类没有定义 __slots__,ndb.Model 没有定义)

关于python - 如何将临时信息附加到我的 appengine ndb 模型实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24425251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com