Python save()不';在monoengine中更新日期时间字段

Python save()不';在monoengine中更新日期时间字段,python,mongoengine,Python,Mongoengine,我是mongoengine的新手,但这对我来说没有任何意义,当我调用my_update()函数时,用户更新的_at字段不会更新,但其他字段会更新。 这是我的模型: class User(db.Document): username = db.StringField(required=True, unique=True, max_length=20) created_at = db.DateTimeField(default=datetime.datetime.utcnow())

我是mongoengine的新手,但这对我来说没有任何意义,当我调用my_update()函数时,用户更新的_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))
当我保存时,它会正确地保存新的朋友列表,但它会在字段中保留旧的更新的朋友列表,并且该列表将永远不会再次更新

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')

因此,如果我运行几次我的更新,它每次都会更新
朋友列表
,但是
更新位置
字段保持不变!!!我也不知道。我真的很好奇它为什么会这样

对于任何有同样问题的人, 我发现我必须使用原子更新()而不是Save(),因为Save()在完成之前不会阻塞,并且我的视图函数会在保存对象之前请求它

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

像这样


User.objects(id=User.id).update(set\u update\u at=datetime.datetime.utcnow(),push\u friend\u list=“ss”)