V2EX › Google App Engine
如果想在 Datastore 中保存用户特定的参数设置,你会怎样做?
By darasion at 2010 年 12 月 27 日 · 4626 次点击有没有比这样更好的办法呢:
class User(db.Model):
user_name=db.StringProperty()
....
settings1=db.XXXProperty()
settings2=db.XXXProperty()
settings3=db.XXXProperty()
....
class User(db.Model):
user_name=db.StringProperty()
....
settings1=db.XXXProperty()
settings2=db.XXXProperty()
settings3=db.XXXProperty()
....
3 条回复 • 1970-01-01 08:00:00 +08:00
|
1
Livid MOD PRO 用户的某个 property 是 pickle?
|
|
3
darasion OP 我想到了3种解决办法:
办法1: 把参数设置放在User里边。 class User(db.Model): #用户相关属性 .... #各个参数设置属性 ... 办法2: 用ReferenceProperty将用户和参数设置联系起来。 class User(db.Model): #用户相关属性 .... class Settings(db.Model): user = db.ReferenceProperty(reference_class=User, collection_name='settings') #各个参数设置属性 .... 办法3: 用pickle把所有参数放入一个Property里边。 http://appengine-cookbook.appspot.com/recipe/pickledproperty class User(db.Model): #用户相关属性 .... settings=db.PickledProperty() 问了一下 @keakon ,他说: 『性能和空间占用上来说,3是最优的 实现上来说,1是最方便的,但是更改时比较麻烦,如果改动不频繁,建议用这种 2无论性能还是实现都是最差的』 最终,我还是选择了PickledProperty: http://appengine-cookbook.appspot.com/recipe/pickledproperty |
推荐学习书目
› Python Cookbook