我有这段代码:
route.py :中的
@app.route('/task/<param_userid>', methods=['GET', 'POST'])
def task_new(param_userid=None):
...
obj_task_new = {'user_id': param_userid}
form = FormTask(**obj_task_new)
...
forms.py :中的
class FormTask(Form):
user_id = fields.TextField('UID',validators=[validators.required()])
group = QuerySelectField(query_factory=lambda: db.session.query([MODEL]).filter_by(user_id_field=[USER_ID]), allow_blank=False)
...
其中 [MODEL] 是 db.Model 类(不要认为它与此相关)
我需要的是从 user_id 动态传递的 [USER_ID] 值,我通过路由中的 obj_task_new 发送。吡啶
我也试过
QuerySelectField(query_factory=CustomFunction,...
但是我发现无法将参数传递给它,即使我找到了传递参数的方法,访问 user_id 值的问题仍然存在。
谢谢,
答案 0 :(得分:0)
您有两种选择:
您可以在运行时在控制器中设置字段上的查询:
form = FormTask(**obj_task_new)
form.group.query = db.session.query([MODEL]).filter_by(user_id_field=[param_userid]), allow_blank=False)
您可以利用request
是线程本地的事实并在您的自定义函数中使用它:
def for_current_user():
user_id = request.view_args.get('param_userid')
return db.session.query([MODEL]).filter_by(...)
# And then in your form definition
QuerySelectField(query_factory=for_current_user)