save() 不更新 monoengine 中的日期时间字段

save() doesn't update datetime fields in monoengine

我是 mongoengine 的新手,但这对我来说没有任何意义,当我调用我的 my_update() 函数时,用户的 updated_at 字段没有更新,但其他字段做。 这是我的模型:

class User(db.Document):
    username = db.StringField(required=True, unique=True, max_length=20)
    created_at = db.DateTimeField(default=datetime.datetime.utcnow())
    updated_at = db.DateTimeField()
    friend_list = ListField(StringField(max_length=100))

当我保存时,它正确地保存了新的 friend_list 但它保留了旧的 updated_at 字段,并且那个字段永远不会再次更新。

def my_update(user_id):
    form = UserForm()
    user = User.objects.get_or_404(id=user_id)
    user.friend_list = insert_random_data()
    user.updated_at = datetime.datetime.utcnow()
    user.save()
    return users = User.objects.order_by('-updated_at', '-created_at')

所以如果我 运行 my_update 几次,它每次都会更新 friend_list,但是 update_at 字段保持不变!!!我不知道。我真的很好奇为什么它会这样!

有同样问题的朋友, 我发现我必须使用 Atomic Update() 而不是 Save(),因为 save() 在完成之前不会阻塞,而且我的视图函数会在保存之前请求对象。

所以底线是,保存是邪恶的(大部分)。只需使用原子更新!

像这样

User.objects(id=user.id).update(set__update_at=datetime.datetime.utcnow(), push__friend_list="ss")