另一种选择是使用继承(假设您希望在一个模型中定义这两个字段):使用创建/更新的时间戳字段创建一个基类,覆盖 save 方法并继承您的文档类这个基类:
import datetime
class TimestampedDocument(Document):
meta = {'allow_inheritance': True, 'abstract': True}
created_at = DateTimeField(required=True, default=datetime.datetime.now)
updated_at = DateTimeField(required=True, default=datetime.datetime.now)
def save(
self,
force_insert=False,
validate=True,
clean=True,
write_concern=None,
cascade=None,
cascade_kwargs=None,
_refs=None,
save_condition=None,
signal_kwargs=None,
**kwargs,
):
self.updated = datetime.datetime.now()
super().save(
force_insert, validate, clean, write_concern, cascade, cascade_kwargs, _refs, save_condition,
signal_kwargs, **kwargs
)
...
class YourDocument(TimestampedDocument):
meta = {'collection': 'YourDocument'}
在这种情况下,created_at 在创建文档时设置为一个,updated_at 会在您每次修改文档时更新。