Mongoengine: вставьте элемент ListField во указанный c внедренный документ - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть Document и внедренный документ, и я хочу вставить значение в ListField моего встраиваемого документа. Я не смог найти что-либо об этой проблеме в stackoverflow, поэтому, возможно, кто-нибудь может мне помочь.

Это в основном мой класс модели:

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))

, поэтому я хочу go в специфику c человек указанного класса c и вставьте новую запись характера в список listField charakterEntries.

Допустим, у меня есть className "chemistry" и я хочу вставить новый charakter entry "polite" в ListField "charakterEntries" Человека, который имеет oid="abc123".

Хотя я мог бы сделать что-то вроде этого:

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

Но тогда я получаю следующую ошибку: AttributeError: type object 'Person' has no attribute 'objects'

Кто-нибудь знает, как решить эту проблему? Я много чего перепробовал здесь на stackoverflow, но не смог заставить его работать. Поэтому, пожалуйста, не закрывайте этот вопрос сразу.

Спасибо: -)

1 Ответ

0 голосов
/ 24 апреля 2020

Итак, я наконец нашел решение:

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

Это помещает новую вежливую запись характера в конец ListField.

...