问题描述
为避免在mongoengine Document
上显式计算和设置字段,我希望将其作为计算字段。目前有可能吗?
这是我期望的MWE:
class Task(Document):
meta = {"collection": "tasks"}
@property
def get_values_count(self):
return len(self.values)
dateAdded = DateTimeField()
dateStarted = DateTimeField(default=datetime.utcnow())
values = ListField(IntField())
values_count = IntField(default=get_values_count) # Either this,normal class functions not supported by Documents
# values_count = IntField(default = lambda : len(self.values)) //Or this (this won't compile)
实现这种目标的任何方法吗?
解决方法
如果我正确理解,则您不想在数据库中存储values_count
。因此,您只需使用@property
class Task(Document):
meta = {"collection": "tasks"}
@property
def values_count(self):
return len(self.values)
dateAdded = DateTimeField()
dateStarted = DateTimeField(default=datetime.utcnow())
values = ListField(IntField())