tut*_*uju 3 python fork mongoengine
我正在尝试制作一个MongoEngine 的分支,它允许DateTimeField基于将True传递给一个auto_now或auto_now_add(一个Django)来自动更新.
到目前为止,我已经将属性添加到类似的__init__方法中DateTimeField:
def __init__(self, auto_now=None, auto_now_add=None, **kwargs):
self.auto_now, self.auto_now_add = auto_now, auto_now_add
super(DateTimeField, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法弄清楚如何在创建/保存文档时干净地填充此值.我到目前为止看到的唯一解决方案是在BaseDocument的保存或验证方法中添加字段特定的行为......但我不喜欢它.
有谁知道更好的方法?
顺便说一句:我在读完这个问题和@ equinoxel关于扩展mongo并在django中习惯这个属性的评论之后,我已经开始了.
Ros*_*oss 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)
Run Code Online (Sandbox Code Playgroud)
这方面的主要问题是,如果您打电话update或者如果您进行批量更新,它们将不会更新,例如:MyDocs.objects.update(set__name=X)
添加票证:https://github.com/MongoEngine/mongoengine/issues/110