首先,我对Google App Engine比较陌生,所以我可能会做些傻事.
说我有一个模型Foo:
class Foo(db.Model):
name = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
我想name用作每个Foo对象的唯一键.这是怎么做到的?
当我想获得一个特定的Foo对象时,我目前在数据存储区中查询Foo具有目标唯一名称的所有对象,但查询速度很慢(另外,确保name在Foo创建每个新对象时它是唯一的).
必须有一个更好的方法来做到这一点!
谢谢.
在Appengine中,我试图自动计算属性值并与对象一起存储.
我有一个类,矩形,它有宽度,高度和面积.显然该区域是宽度和高度的函数,但我希望它是一个属性,因为我想用它来进行排序.所以我尝试修改put()函数以在存储Rectangle时隐藏该区域,如下所示:
class Rectangle(db.Model):
width = db.IntegerProperty()
height = db.IntegerProperty()
area = db.IntegerProperty()
def put(self, **kwargs):
self.area = self.width * self.height
super(Rectangle, self).put(**kwargs)
Run Code Online (Sandbox Code Playgroud)
这在我put()直接调用Area对象时有效:
re1 = Rectangle(width=10, height=10)
re1.put()
print re1.area # >> 10
Run Code Online (Sandbox Code Playgroud)
但是当我使用db.put()(例如一次性保存很多)时,这会中断.
re2 = Rectangle(width=5, height=5)
db.put(re2)
print re2.area # >> None
Run Code Online (Sandbox Code Playgroud)
"偷偷摸摸"计算值的正确方法是什么?