Я создаю базу данных для моей школы. Существует студенческий документ с полем EmbeddedDocumentListField для взрослых. Я пытаюсь обновить существующие EmbeddedDocuments, используя методы EmbeddedDocumentListField, но как save(), так и update() дают мне ошибки. get(), похоже, работает.
class Adult(EmbeddedDocument):
relation = StringField() # Adult, Mother, Father, Grandmother...
...
notes = StringField()
class Student(Document):
afname = StringField()
alname = StringField()
...
adults = EmbeddedDocumentListField('Adult')
Я могу успешно использовать метод get
@app.route('/editadult/<aeriesid>/<adultoid>')
def editadult(aeriesid,adultoid):
editUser = User.objects.get(aeriesid=aeriesid)
editAdult = editUser.adults.get(oid=adultoid)
Это возвращает объект с именем editAdult с ожидаемыми атрибутами, но не с методами. Теперь я хочу обновить значения в этом объекте. Я могу видеть методы, которые я хочу вызвать, делая.
dir(editUser.adults)
Но не вижу методов с
dir(editAdult)
Из моего чтения документов я должен быть в состоянии сделать это.
editAdult.update(fname="Juanita", lname="Sanchez")
Это дает ошибку: AttributeError: объект «Взрослый» не имеет атрибута «обновление». Но не могу понять, как использовать методы в этом контексте. Я попытался
editAdult.fname = "Juanita"
editAdult.lname = "Sanchez"
editAdult.save()
Но это дает ошибку: AttributeError: объект «Взрослый» не имеет атрибута «сохранить».
Документация скудная. Mongoengine говорит мне, что такое методы, но без примеров. https://docs.mongoengine.org/apireference.html#embedded-document-querying И GitHub дает хорошие примеры, но я не смог заставить их работать. https://github.com/MongoEngine/mongoengine/pull/826
Я использую Mongoengine 0.20.0