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上有一个属性来检查此数据是否存在,如果不存在,则进行查询。这正是我试图避免的。我不希望在模型中添加另一个字段,而是希望在引用项目实例时立即获取它。