MongoEngine字段DoesNotExist错误,但实际上是



我有一个类:

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";使它们不同的字符串,出于某种原因;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";。

事实上:

  • 拉丁语";c";(https://www.codetable.net/decimal/99)
  • cyrillic";с";(https://www.codetable.net/decimal/1089)

见下文:

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)

如果你把它们做得一样,代码就会像一个魅力一样工作

相关内容

最新更新