我的应用程序有db类,
class invoice(db.Model):
location_code = db.StringProperty()
invoice_no = db.IntegerProperty()
product_tax_rate = db.FloatProperty()
basic_tax_rate = db.FloatProperty()
addl_tax_rate = db.FloatProperty()
.
.
.
在此,我想将 product_tax_rate 的值设置为属性 basic_tax_rate 的属性的默认值,如果 addl_tax_rate 的值为的 0 即可。
如何在此类方法中为此逻辑添加通用过程?
如果您仍未达到此要求,请与我们联系。
答案 0 :(得分:2)
您可以使用NDB和ComputedProperty之类的内容:
class invoice(ndb.Model):
product_tax_rate = ndb.ComputedProperty(lambda self: self.basic_tax_rate if self.addl_tax_rate == 0 else ???)
basic_tax_rate = ndb.FloatProperty()
addl_tax_rate = ndb.FloatProperty()
答案 1 :(得分:1)
您可以使用模型钩子:https://developers.google.com/appengine/docs/python/ndb/entities#hooks
通过定义一个钩子,一个应用程序可以在某种类型的操作之前或之后运行一些代码;例如,Model可能会在每个get()之前运行一些函数。
因此,当addl_tax_rate为0时,您只需要一些逻辑,以便在将模型放入数据存储区时相应地设置值。类似的东西:
def _pre_put_hook(self):
if self.addl_tax_rate == 0:
self.basic_tax_rate = self.product_tax_rate
该代码未经过测试。
答案 2 :(得分:0)
只需在创建实体新实例的代码中手动执行。或者覆盖构造函数(但听起来它只是引导你进行更多调试的谜团)。