При чтении after_model_change
документов вы можете видеть, что модель уже зафиксирована. Если вы хотите изменить модель в этом методе, вам нужно зафиксировать изменения в базе данных. Например,
def after_model_change(self, form, model, is_created):
current_remarks= model.remarks
model.rhistory = f'changes made : {current_remarks}'
try:
db.session.commit():
except Exception as ex:
db.session.rollback()
# handle error
Вы спрашиваете: «Могу ли я получить значение примечаний, которые вводит пользователь, чтобы я мог обновить его во время обновления модели». Конечно, вы можете, при условии, что поле примечаний присутствует в форме создания / редактирования. Например, форма, переданная в on_model_change(form, model, is_created)
, является формой, используемой для создания / обновления модели - см. документы . например,
#works fine and udpates the column
def on_model_change(self, form, model, is_created):
curr_user = getpass.getuser()
model.updatedby = curr_user
# assume form has a field called remarks
model.remarks = form.remarks.data