2017-06-29 67 views
0

我是mongoengine的新手,但這對我沒有任何意義,當我調用my_update()函數時,用戶的updated_at字段不會更新,但其他田野呢。 這裏是我的模型:save()不更新單引擎中的datetime字段

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

對於有同樣問題的人, 我想通過使用Atomic Update()而不是Save(),因爲save()不會阻塞,直到完成並且我的view函數將要求對象在它被保存之前。

所以底線是,保存是邪惡的(主要是)。只是使用原子更新!

這樣

User.objects(id=user.id).update(set__update_at=datetime.datetime.utcnow(), push__friend_list="ss")