Google app engine 以编程方式更改db.model属性的默认值

Google app engine 以编程方式更改db.model属性的默认值,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,如果属性具有以下默认值: class myModel(db.Model): myProperty = db.SomeProperty(default='Default') 是否有一种方法可以通过编程方式使其可以由用户交互触发并更改“默认”值 我能想到的最好的方法是对它进行更多的破解——让这个属性在默认情况下引用其他东西,然后我更改引用的值,然后为所有实体更改它 但是有更好的方法更直接地更改默认值吗?为什么不在创建/更新实体时以编程方式设置myProperty属性呢?如果这不起作用,您可

如果属性具有以下默认值:

class myModel(db.Model):
    myProperty = db.SomeProperty(default='Default')
是否有一种方法可以通过编程方式使其可以由用户交互触发并更改“默认”值

我能想到的最好的方法是对它进行更多的破解——让这个属性在默认情况下引用其他东西,然后我更改引用的值,然后为所有实体更改它


但是有更好的方法更直接地更改默认值吗?

为什么不在创建/更新实体时以编程方式设置myProperty属性呢?如果这不起作用,您可以查看ndb.ComputedProperty,但您必须从db升级到ndb。@user3058197除非我误解了您的意思,否则这将需要维护“defaults”数据存储条目,并重载put to set If not self.myProperty:self.myProperty=defaults.myModel\u myProperty。。这似乎有点骇人。我误解了你的问题-我认为你必须为所有实体更改它。这是一个坏主意,你会为它运行的实例设置myModel类的默认值。因此,如果没有在每次创建myModel时显式设置它,其他调用将获得新的默认值。您将在类中实例化一个新的db.SomeProperty。您应该使用工厂来创建myModel的实例,并在那里设置您想要的默认值。@TimHoffman我想我不会。。?如果它是db.ReferenceProperty,那么我只需在默认实例中更改db.SomeProperty的值。缺点是每次我想访问这个属性时都会有两次db读取。