【发布时间】:2021-01-05 21:38:35
【问题描述】:
鉴于以下设置(简化):
class Parent(db.Document):
_id = db.ObjectIdField(required=True, default=lambda: ObjectId(), primary_key=True)
name = db.StringField(required=False)
test = db.MapField(db.EmbeddedDocumentField('Child'), required=False)
class Child(db.EmbeddedDocument):
_id = db.ObjectIdField(required=True, default=lambda: ObjectId(), primary_key=True)
ref = db.ReferenceField('Parent')
parent = Parent.objects(_id=x).first()
return jsonify(parent.test)
我收到以下错误:AttributeError: 'ListField' object has no attribute 'in_bulk'
File "/home/me/testSetup/test.py", line 310, in get
return jsonify(parent.test)
File "/home/me/lib/python3.7/site-packages/mongoengine/base/fields.py", line 329, in __get__
value = _dereference(value, max_depth=1, instance=instance, name=self.name)
File "/home/me/lib/python3.7/site-packages/mongoengine/dereference.py", line 97, in __call__
self.object_map = self._fetch_objects(doc_type=doc_type)
File "/home/me/lib/python3.7/site-packages/mongoengine/dereference.py", line 174, in _fetch_objects
references = collection.objects.in_bulk(refs)
AttributeError: 'ListField' object has no attribute 'in_bulk'
我不太清楚为什么会这样。我根本没有使用 ListField。我可以访问name 和_id,并且此设置以前与其他类一起使用。 return jsonify(parent) 也可以工作,它包含 test 字段及其所有值。有人有想法吗?
编辑:我很傻,从简化示例中删除/审查了导致错误的部分。字段test 实际上被称为objects。重命名它解决了错误。
【问题讨论】:
标签: python mongodb mongoengine