代码之家  ›  专栏  ›  技术社区  ›  Rizio

Mongoengine删除ReferenceField值

  •  2
  • Rizio  · 技术社区  · 7 年前

    我想删除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文档中。关于unset的信息不多。所以我试着这样做

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

    {
        "_id": {
            "$oid": "59ca38c5d1174d081c9bcaca"
        },
        "name": "Amanda",
        "last_name": "Barow",
        "address_ref": ""
    },
    {
        "_id": {
            "$oid": "59ca38c4d1174d081c9bcac9"
        },
        "name": "Larry",
        "last_name": "Denor",
        "address_ref": {
            "$oid": "59c8f34200fc624a0168c4bc"
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Jundiaius    7 年前

    您的更新会导致TypeError,因为您在类级别调用此方法-您应该在文档/实例上调用它。这就是TypeError提到缺少第一个位置参数的原因( self )哪个是要更新的实例。

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

    如果更新有效,该行将返回 1 .