Mongoengine:将 ListField 项插入到特定的嵌入式文档中

Mongoengine: insert ListField item into a specific embedded Document

我有一个文档和一个嵌入文档,我想将一个值插入到我的嵌入文档的 ListField 中。我在 Whosebug 上找不到关于这个问题的任何信息,所以也许任何人都可以帮助我。

这基本上是我的模型class:

class Person(EmbeddedDocument):
    oid = ObjectIdField(required=True, default=ObjectId,
                        unique=True, primary_key=True, sparse=True)
    personName = StringField()
    charakterEntries= ListField()

class schoolClass(Document):
    className= StringField(unique=true)
    persons = ListField(EmbeddedDocumentField(Personn))

所以我想进入特定 class 的特定人并在 listField charakterEntries 中插入一个新的 charakter 条目。

假设我有一个 className "chemistry" 并且想要将新的 charakter entry "polite" 插入到拥有 oid="abc123" 的人的 ListField "charakterEntries" 中。

虽然我可以做这样的事情:

 person= Person.objects(oid=id).get()
    person.charakterEntries.append("polite")
    person.save()

但随后出现以下错误:AttributeError: type object 'Person' has no attribute 'objects'

有谁知道如何解决这个问题?我在 Whosebug 上尝试了很多东西,但无法让它工作。所以请不要马上关闭这个问题。

谢谢 :-)

所以我终于找到了解决办法:

 schoolClass.objects.filter(persons__oid="abc123").update_one(
        push__persons__S__charakterEntries="polite")

这会将新的字符条目礼貌地放在 ListField 的末尾。