我想删除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"
}
}
我希望得到这种效果(Amanda 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 :(得分:0)
您的更新会导致TypeError,因为您在类级别调用此方法 - 您应该在文档/实例上调用它。这就是为什么TypeError提到缺少第一个位置参数(self
),这是要更新的实例。
所以你的更新行应该是这样的:
User.objects().first().update(address_ref="")
如果更新有效,该行将返回1
。