首页 > 解决方案 > 在 mongoengine 中将字段更新为 null

问题描述

我正在使用mongoengine。我希望能够在数据库中将我的字段设置为空,例如。字符串为空。

我尝试了以下操作,在我看来,每当我通过 None 时,该字段都会被跳过,并且我无法替换现有值。这甚至可能吗?

if user.contact_phone_number == "":
    user.contact_phone_number = None

我的文件:

contact_phone_number = StringField(
    db_field="contactPhoneNumber",
    regex=RE_CONTACT_PHONE,
    unique=False,
    sparse=True,
    required=False,
    null=True
)

标签: pythonmongodbflaskmongoengine

解决方案


将 StringField 设置为 None 没有任何问题,见下文

from mongoengine import *

connect()

class TestDoc(Document):
    s = StringField()

TestDoc(s='test').save()

t = TestDoc.objects.first()
assert t.s == 'test'

t.s = ""
t.save()

t = TestDoc.objects.first()
assert t.s is ""

t.s = None
t.save()

t = TestDoc.objects.first()
assert t.s is None

推荐阅读