我正在尝试a fork MongoEngine a la Django允许根据将{True}传递给DateTimeField
或auto_now
来自动更新auto_now_add
({3}} this question)。
到目前为止,我已将属性添加到__init__
的{{1}}方法,如下所示:
DateTimeField
不幸的是,我无法弄清楚如何在创建/保存文档时干净地填充此值。我到目前为止看到的唯一解决方案是在BaseDocument的save或validate方法中添加字段特定的行为......但我不喜欢它。
有谁知道更好的方法?
顺便说一下:我在阅读equinoxel和@ {{3}}关于在django中扩展mongo并习惯这个属性的评论之后,试着去看看。
答案 0 :(得分:11)
您可以在保存之前添加预保存信号并更新文档日期。
class MyDoc(Document):
name = StringField()
updated_at = DateTimeField(default=datetime.datetime.now)
@classmethod
def pre_save(cls, sender, document, **kwargs):
document.updated_at = datetime.datetime.now()
signals.pre_save.connect(MyDoc.pre_save, sender=MyDoc)
主要问题是,如果您致电update
或进行批量更新,则不会更新,例如:MyDocs.objects.update(set__name=X)