save() не обновляет поля даты и времени в 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))
когда я сохраняю, он правильно сохраняет новый список друзей, но сохраняет старое поле 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
поле остается прежним!!! и я понятия не имею. Мне действительно любопытно, почему он так себя ведет!
1 ответ
Для тех, у кого такая же проблема, я понял, что мне нужно использовать Atomic Update() вместо Save(), потому что save () не будет блокироваться, пока это не будет сделано, и моя функция просмотра будет запрашивать объект до того, как он был сохранен.
Итак, суть в том, что Save is Evil (в основном). просто используйте атомное обновление!
как это
User.objects(id=user.id).update(set__update_at=datetime.datetime.utcnow(), push__friend_list="ss")