У меня проблема с удалением и обновлением методом update_one.Похоже, что метод не был реализован в mongoengine.Моя цель состоит в том, чтобы удалить поле Student из ListField.В примере кода моя модель показывает схему базы данных, а мое представление - маршруты моего приложения.Я хотел бы получить пример того, что мешает мне получить доступ к методу (update_one) из моего класса StudentYear.Я не знаю, как форматировать переполнение стека, так что извините заранее.
ListField (ReferenceField ('Student')).Я получаю сообщение об ошибке AttributeError: у объекта «SchoolYear» нет атрибута «update_one», и я искал решение, которое исправит самое близкое, к которому я попал, - эти две ссылки, но когда я попробовал его сам, он не работал,
MongoEngine - извлечение ссылки из ListField по id
https://github.com/mongomock/mongomock/issues/458
Страница 25 по следующей ссылке показывает удаление и добавление с помощью update_oneМетод https://media.readthedocs.org/pdf/mongoengine-odm/stable/mongoengine-odm.pdf
requiredfile.txt
Click==7.0
Flask==1.0.2
Flask-MongoAlchemy==0.7.2
flask-mongoengine==0.9.5
Flask-WTF==0.14.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
mongoengine==0.16.3
mongomock==3.14.0
pymongo==3.7.2
sentinels==1.0.0
six==1.12.0
Werkzeug==0.14.1
WTForms==2.2.1
МОДЕЛЬ
from mongoengine import *
from mongoengine.fields import *
class Student(Document):
FirstName = StringField(default='')
LastName = StringField(default='')
listNumber = IntField(default=0)
class SchoolYear(Document):
year = IntField(required=True,min_value=1871, max_value=2020)
students = ListField(ReferenceField('Student', required=True, reverse_delete_rule=CASCADE))
ПРОСМОТР
from flask import Blueprint, jsonify, request,Response
from models import Student, SchoolYear
from bson import json_util
@app.route('/location/', methods=['POST'])
def remove_student():
encodedString = request.get_json()
FirstName = str(encodedString['FirstName'])
LastName = str(encodedString['LastName'])
year = int(encodedString['year'])
students_year = SchoolYear.objects(year=year).get()
for student in students_year.students:
if(str(student['FirstName']) == FirstName and str(student['LastName']) == LastName):
students_year.update_one(pull__students=student)
return jsonify({'result': 10})