Я нашел способ, но не уверен, что это лучший способ или нет.Таким образом, идея в том, что мы создаем новую функцию в модели для обновления и передачи объекта JSON и установки атрибута с помощью объекта.
from . import db
class ItemModel(db.Model):
__tablename__ = "items"
id = db.Column(db.Integer, primary_key=True)
code = db.Column(db.String(), nullable=False)
name = db.Column(db.String(), nullable=False)
tags = db.Column(db.String(), nullable=False)
created_at = db.Column(db.DateTime, server_default=db.func.now())
updated_at = db.Column(
db.DateTime,
server_default=db.func.now(),
server_onupdate=db.func.now()
)
def update_to_db(self, data):
for key, value in data.items():
setattr(self, key, value)
db.session.commit()
Теперь в ресурсе мы вызываем функцию обновления с входным JSON из запроса.
@classmethod
def put(self, id: int):
item = ItemModel.find_by_id(id)
if(item):
try:
item.update_to_db(
request.get_json()
)
except ValidationError as err:
return err.messages, HTTPStatus.BAD_REQUEST
return {'message': item_schema.dump(item)}, HTTPStatus.OK
return {'message': gettext('item_not_found')}, HTTPStatus.NOT_FOUND
Это работает, но все еще не уверен, есть ли лучший способ сделать это.