仅在某些条件下自动更改mongoengine中update_time的最佳方法

时间:2016-10-07 17:22:33

标签: mongoengine

假设我定义了一个模型Story,并在我的save方法中自动更新了update_time字段:

class Article(Document):
    ...
    content = StringField()
    likes = IntField(default=0)
    some_mark = BooleanField()
    update_time = DateTimeField(default=datetime.datetime.now)

    def save(...)
        self.updated_at = datetime.datetime.now()
        ...

但我不想仅在update_time计数或likes更改时才更新some_mark。或者,如果我只想更改某些字段(如update_time)时更新content。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以检查Document类上的._changed_fields属性,以检查已更改的字段

class Person(Document):
    name = StringField()
    enter code here

p = Person(name='John').save()

print(p._changed_fields)   # []

p.name = 'Bob'
print(p._changed_fields)   # ['name']