Python 如何向mongoengine模型添加自定义字段?

Python 如何向mongoengine模型添加自定义字段?,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我有一个项目模型如下: class Project(me.Document): title = me.StringField(max_length=64, required=True, unique=True) start_date = me.DateTimeField(default=datetime.utcnow()) end_date = me.DateTimeField(default=datetime.utcnow()) duration = me.In

我有一个项目模型如下:

class Project(me.Document):
    title = me.StringField(max_length=64, required=True, unique=True)
    start_date = me.DateTimeField(default=datetime.utcnow())
    end_date = me.DateTimeField(default=datetime.utcnow())
    duration = me.IntField() #  sprint duration
    sequence = me.IntField()

    def __init__(self, *args, **values):
        super(Project, self).__init__( *args, **values)

    def __str__(self):
        return self.title

     def get_current_sprint(self):
         ''' A logic here to calculate the current sprint.'''
还有另一款sprint:

class Sprint(me.Document):
    start_date = me.DateTimeField()
    end_date = me.DateTimeField()
    sequence = me.IntField(required=True, default=0, unique_with='project')
    project = me.ReferenceField('Project')
如果我有项目实例,那么我可以通过如下方式调用该方法来获取当前sprint

project.get_current_sprint()
但我想说的是;无论何时查询项目对象,而不是调用方法来获取当前sprint,它都应该具有属性project.current\u sprint,该属性具有当前sprint信息

有没有办法做到这一点


任何帮助都将不胜感激。

我认为您正在寻找的概念在MongoDB中被称为


在MongoEngine中,您可能会在您的项目模型中创建一个引用Sprint文档的文档。

我正在尝试实现类似的目标,虽然我不知道完整的答案,但我会发布我已经确定的内容。您可能想做的事情应该由一个查询集来启用,您可以通过Project.objects访问该查询集。Mongoengine创建了一个,但允许您替换它,这样当您获取Project.objects.get。。。例如,它可能预取与此项目相关的sprint。如何做到这一点可能是通过我还不熟悉的mongoengine语法实现的。
最后,您可能需要将属性和缓存结合起来才能实现所需的功能。被查询的项目将有一个对sprint的动态引用,比如project.sprint,您可以在project上有一个属性来检查此数据是否存在,如果不存在,则进行查询。

这正是我试图避免的。我不希望在模型中添加另一个字段,而是希望在引用项目实例时立即获取它。