在flask/flask-admin中选择2字段实现

fbe*_*stz 7 python flask wtforms flask-wtforms flask-admin

我正试图在我的一个烧瓶视图中实现Select2字段.基本上我想在烧瓶应用程序视图中使用相同的select2字段(不是烧瓶管理模型视图),就像在Flask-admin模型创建视图中一样.目前我的解决方案QuerySelectField来自于看起来像这样的wtforms

class TestForm(Form):
    name= QuerySelectField(query_factory=lambda: models.User.query.all())
Run Code Online (Sandbox Code Playgroud)

这让我加载和选择我需要的所有数据,但它不提供选择2搜索框等.目前,所有我发现是Select2FieldSelect2Widget从瓶/管理/表格/域和瓶/管理/表格/部件同样像这篇文章/sf/ask/1725147231/ 以及http://ivaynberg.github.io/select2/上的 select2文档 据我了解这些可以重复使用,这意味着不需要其他自定义小部件,自定义字段.

如果有人可以提供有关在应用程序中的select2字段实现的更多信息(包括视图,模板,表单文件以及如何正确地"连接"必要的js和css文件,以及如何使用数据库模型加载字段,将不胜感激需要).

PiQ*_*uer 7

这对我有用:

...
from wtforms.ext.sqlalchemy.fields import QuerySelectField
from flask_admin.form.widgets import Select2Widget
...

class TestForm(Form):
    name= QuerySelectField(query_factory=lambda: models.User.query.all(),
                           widget=Select2Widget())
Run Code Online (Sandbox Code Playgroud)

在你的模板中:

{% extends "admin/master.html" %}
{% import 'admin/lib.html' as lib with context %}

{% block head %}
    {{ super() }}
    {{ lib.form_css() }}
{% endblock %}

{% block body %}
...
{% endblock %}

{% block tail %}
    {{ super() }}
    {{ lib.form_js() }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

如果有必要,我可以尝试整理一个最小的工作示例。