小编dro*_*ble的帖子

flask-admin形式:根据字段1的值限制字段2的值

我一直努力在flask-admin中实现的一个功能是当用户编辑表单时,一旦设置了字段1就限制字段2的值.

让我用文字举一个简化的例子(实际的用例更复杂).然后我将展示实现该示例的完整要点,减去"约束"功能.

假设我们有一个数据库,可以跟踪一些软件"配方",以各种格式输出报告.在recipe我们的样本数据库的表中有两个配方:"严重的报告","ASCII艺术".

为了实现每个配方,我们从几种方法中选择一种.method我们数据库的表有两个方法:"tabulate_results","pretty_print".

每种方法都有参数.该methodarg表有两个参数名称"tabulate_results"("rows","display_total")和两个参数"pretty_print"("embellishment_character","lines_to_jump").

现在,对于每个配方("严肃报告","ASCII艺术"),我们需要提供各自方法的参数值("tabulate_results","pretty_print").

对于每个记录,该recipearg表允许我们选择一个配方(即字段1,例如"严重报告")和参数名称(即字段2).问题是显示了所有可能的参数名称,而它们需要根据字段1的值进行约束.

我们可以实现哪些过滤/约束机制,一旦我们选择"严重报告",我们知道我们将使用"tabulate_results"方法,因此只有"rows"和"display_total"参数可用?

我正在考虑一些AJAX巫术,它检查Field 1并为Field 2值设置查询,但不知道如何继续.

您可以通过使用要点来看到这一点:单击Recipe Arg选项卡.在第一行("严重报告")中,如果您尝试通过单击来编辑"Methodarg"值,则所有四个参数名称都可用,而不是仅两个.

# full gist: please run this

from flask import Flask
from flask_admin import Admin
from flask_admin.contrib import sqla
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

# Create application
app = Flask(__name__)

# Create dummy secrey key so we can use sessions
app.config['SECRET_KEY'] = '123456790'

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///a_sample_database.sqlite'
app.config['SQLALCHEMY_ECHO'] = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy flask-admin

10
推荐指数
1
解决办法
2050
查看次数