计算 MongoDB 文档 DateTimeField 的“年龄” Flask

0 投票
1 回答
1303 浏览
提问于 2025-04-30 11:39

我正在使用 Python 3.4 和 Flask 0.10,配合 MongoDB 2.6 来开发我的应用程序。我的数据是 Mongo 文档。我想根据生日来计算“年龄”或“年数”。我有以下这段代码:

import datetime
from Personal import db

class Person(db.Document):
    ID = db.StringField(required=True, primary_key=True, unique=True, max_length=6)
    name = db.StringField(required=True)
    birthday = db.DateTimeField(required=True)
    age = ########

我试过用

age = int(datetime.datetime.now.year) - int(birthday).year

但我知道这样是不对的。我已经看过 Mongo 文档的指南,但没什么帮助:

http://docs.mongoengine.org/guide/defining-documents.html

请帮我解决一下关于日期时间的操作问题

谢谢

暂无标签

1 个回答

0

你想要的功能可能在Python里,而不是在MongoDB中。通过使用一个叫做property的东西,你可以很简单地实现这个:

class Person(db.Document):
    ID = db.StringField(required=True, primary_key=True, unique=True, max_length=6)
    name = db.StringField(required=True)
    birthday = db.DateTimeField(required=True)

    @property
    def age(self):
        return ((datetime.datetime.now() - self.birthday).days) / 365

使用这个类,你可以这样做:

>>> p = Person(name='rafael', birthday=datetime.datetime(year=1990, day=1, month=1))
>>> p.age
24

不过,你不能通过年龄来查询,因为数据库里没有保存这个信息。

撰写回答