【问题标题】:MongoEngine fieldDoesNotExist error but it actually isMongoEngine fieldDoesNotExist 错误,但实际上是
【发布时间】:2023-03-12 04:40:02
【问题描述】:

我有一堂课:

class POI(Document):
    location = PointField(required=True)
    name = StringField(default='')
    generate_by = IntField(required=True)
    status = StringField(default='Active')
    colleсted_by = IntField()
    time_created = DateTimeField(default=datetime.datetime.now)

当我尝试插入时

POI(location=[55.430212, 30.521000], generate_by=1241254, name="Sample", collected_by=None)

发生错误

mongoengine.errors.FieldDoesNotExist: The fields "{'collected_by'}" do not exist on the document "POI"

怎么了?

【问题讨论】:

  • Collected_by 是 int 字段,您在其中传递字符串“NONE”

标签: python mongodb error-handling mongoengine


【解决方案1】:

实际上,您在两个“collected_by”字符串中有一个小错字,这使得它们有所不同,出于某种原因,您在这里使用的“c”:

class POI(Document):
    location = PointField(required=True)
    name = StringField(default='')
    generate_by = IntField(required=True)
    status = StringField(default='Active')
    colleсted_by = IntField()
         ^
         |

不是常规的拉丁语“c”,而是一个西里尔字符,看起来与拉丁语“c”一模一样。

事实上:

见下文:

In [16]: "collected_by" == "colleсted_by"
Out[16]: False

In [17]: "с" == "c"
Out[17]: False

In [20]: ord("с"), ord("c")
Out[20]: (1089, 99)

如果你使它们相同,代码将像魅力一样工作

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 2020-12-21
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多