我是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
字段保持不变!我不知道我很好奇为什么它会像这样!
答案 0 :(得分:0)
对于有同样问题的人, 我想我必须使用Atomic Update()而不是Save(),因为save()在完成之前不会阻塞,我的视图函数会在保存之前询问对象。
所以底线是,Save is Evil(大部分)。只是使用原子更新!
像这样
User.objects(id=user.id).update(set__update_at=datetime.datetime.utcnow(), push__friend_list="ss")