相关疑难解决方法(0)

Google App Engine模型的自定义键(Python)

首先,我对Google App Engine比较陌生,所以我可能会做些傻事.

说我有一个模型Foo:

class Foo(db.Model):
   name = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)

我想name用作每个Foo对象的唯一键.这是怎么做到的?

当我想获得一个特定的Foo对象时,我目前在数据存储区中查询Foo具有目标唯一名称的所有对象,但查询速度很慢(另外,确保nameFoo创建每个新对象时它是唯一的).

必须有一个更好的方法来做到这一点!

谢谢.

python google-app-engine primary-key google-cloud-datastore

12
推荐指数
1
解决办法
4267
查看次数

如何覆盖python app引擎模型上的put()方法?

在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)

"偷偷摸摸"计算值的正确方法是什么?

python google-app-engine

6
推荐指数
1
解决办法
606
查看次数