函数中mongoengine中的计算字段

问题描述

为避免在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())

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...