我正在使用 flask-admin 并使用 baseView 显示一些自定义表单,一旦输入并提交数据,它就会存储在数据库的表中。现在我希望它在对名为 1 的表进行编辑时更新所有表中的数据。我尝试使用 on_model_change() 函数,但它仍然不起作用。甚至 after_model_change() 函数也不起作用。有什么解决办法吗?
这是我的桌子或模型: 表 1:
class Test1(db.Model):
Test_id = db.Column(
db.Integer, primary_key=True, autoincrement=True)
Test_name = db.Column(db.String(500), nullable=True)
表2:
class test_details(db.Model):
details_id = db.Column(
db.Integer, primary_key=True, autoincrement=True)
invoice_id = db.Column(db.Integer, nullable=True)
test_name = db.Column(db.String(200), nullable=True)
amount = db.Column(db.Integer, nullable=True)
created_by = db.Column(db.String(100), nullable=True)
created_date = db.Column(db.DateTime(timezone=True),
default=datetime.utcnow, nullable=True)
def __str__(self):
return self.invoice_id
这是我的表单自定义视图:
class testUserView(BaseView):
def is_accessible(self):
if not current_user.is_active or not current_user.is_authenticated:
return False
if current_user.has_role('superuser') or current_user.has_role('user'):
return True
return False
def after_model_change(self, form, model, is_created):
print("after_model_change called")
if is_created:
print("Hey, new record created with values:")
@expose('/', methods=['GET', 'POST'])
def index(self):
if request.method == 'POST':
data = request.form
# print(data)
generate_id(data)
return jsonify({'success': True})
# return self.render('admin/usertest.html')
speciesData = get_species_table_data()
specimenData = get_specimen_table_data()
locationData = get_location_table_data()
clinicalTestData = get_clinicalTest_table_data()
clinicalTestDatas = json.dumps(clinicalTestData)
return self.render('admin/usertest.html', speciesData=speciesData, specimenData=specimenData, locationData=locationData, clinicalTestData=clinicalTestDatas, admin_base_template=admin.base_template)
管理员添加视图:
admin.add_view(testUserView(name="Create Order",
endpoint='usertest', category='Manage Orders'))
我尝试使用 on_model_change() 和 after_model_change() 函数作为 flask-admin 的事件处理程序。我希望它打印“after_model_change called”,但控制台上未显示文本,这意味着未调用该函数。我怎样才能解决这个问题 ?请帮助