python - MongoEngine fieldDoesNotExist 错误,但实际上是
问题描述
我有一堂课:
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)
- 西里尔字母“с”(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)
如果您使它们相同,则代码将像魅力一样工作
推荐阅读
- json - 错误:类型“字符串”不是“地图”类型的子类型
' 在类型转换中 - python - MongoDB Python list_database_names() 错误
- yosys - 错误:在库中找不到缓冲门
- java - 如何为不在您的路径上的 JDK 创建 JavaCompiler 实例?
- python-3.x - sudo 作为 python 程序中的用户
- javascript - 为什么这个逻辑运算符不起作用?
- android - FileProvider 无法在 Android 11 上将文件附加到电子邮件客户端
- graphql - 如何使用 Graphql SPQR 实现查询过滤器和排序?
- angular - 类型错误无法读取角度 8 中未定义的属性
- c++ - 有什么方法可以在没有头文件(.h)的情况下使用 dlsym(动态链接)从 DLL 中获取结构?