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")
我是 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")