2017-09-29 40 views
2

我想在mongoengine刪除ReferenceField值Mongoengine刪除ReferenceField價值

我的模型:

class User(db.Document): 
    name = StringField(required=True) 
    last_name = StringField() 
    address_ref = ReferenceField(Address) 



class Adress(db.Document): 
    street = StringField() 
    city = StringField() 
    state = StringField() 

不幸的是mongengine文檔。關於未設置的信息並不多。所以我想這樣的事情

User.update(id=ObjectId("59ca38c5d1174d081c9bcaca")).unset(address_ref="").first() 

,但我有一個錯誤

TypeError: update() missing 1 required positional argument: 'self' 

我的文檔

{ 
    "_id": { 
     "$oid": "59ca38c5d1174d081c9bcaca" 
    }, 
    "name": "Amanda", 
    "last_name": "Barow", 
    "address_ref": { 
     "$oid": "59ca38c9d1174d081c9bcad7" 
    } 
}, 
{ 
    "_id": { 
     "$oid": "59ca38c4d1174d081c9bcac9" 
    }, 
    "name": "Larry", 
    "last_name": "Denor", 
    "address_ref": { 
     "$oid": "59c8f34200fc624a0168c4bc" 
    } 
} 

我想獲得這樣的效果(阿曼達adress_ref = 「」)

{ 
    "_id": { 
     "$oid": "59ca38c5d1174d081c9bcaca" 
    }, 
    "name": "Amanda", 
    "last_name": "Barow", 
    "address_ref": "" 
}, 
{ 
    "_id": { 
     "$oid": "59ca38c4d1174d081c9bcac9" 
    }, 
    "name": "Larry", 
    "last_name": "Denor", 
    "address_ref": { 
     "$oid": "59c8f34200fc624a0168c4bc" 
    } 
} 

回答

0

你更新的原因TypeError是因爲您在類級別調用此方法 - 您應該在文檔/實例上調用它。這就是爲什麼TypeError提到沒有第一個位置參數(self),它是要更新的實例。

所以您的更新行應該像那:

User.objects().first().update(address_ref="") 

如果更新工作,該行會返回1