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

Другие вопросы по тегам