简体   繁体   English

SQL Alchemy / Flask / WTF表单为queryselectfield设置默认值

[英]SQL Alchemy/ Flask / WTF Forms set a default value for a queryselectfield

I want to set a default value for my queryselectfield. 我想为我的queryselectfield设置默认值。 My code looks like this: 我的代码如下所示:

Template: 模板:

{% import "bootstrap/utils.html" as utils %}
{% import "bootstrap/wtf.html" as wtf %}
{% extends "base.html" %}
{% block title %}Request{% endblock %}
{% block body %}
<div class="content-section">
...
{{ form.country(class_="selectformfield") }
...

Route: 路线:

@requests.route('/request/add', methods=['GET', 'POST'])
@login_required
def add_request():

check_admin()

add_request = True

form = RequestForm()
if form.validate_on_submit():
    ...
    Country = form.hostname.data
    ...

    request = Request(...country=country, ...)

    try:
        # add request to the database
        db.session.add(request)
        db.session.commit()
        flash('You have successfully added a new request.')
    except:
        # in case request name already exists
        flash('Error: request already exists.')

    # redirect to the request page
    return redirect(url_for('requests.show_request', id=request.id))

# load request template
return render_template('requests/add_request.html', add_request=add_request,
                       form=form, title='Add new Request')

Form: 形成:

class RequestForm(FlaskForm):
...
country = QuerySelectField(query_factory=lambda: Country.query.all(), get_label="name")
...

I already tried it like this, but it didn't work. 我已经这样尝试过了,但是没有用。

default_country = query_factory=lambda: Country.query.filter(Country.id == '1')
country = QuerySelectField(query_factory=lambda: Country.query.all(), get_label="name", default=default_country)

SQLAlchemy/WTForms: set default selected value for QuerySelectField I also already read this post here with a simmilar problem, but the solution doesn't work for me. SQLAlchemy / WTForms:设置QuerySelectField的默认选择值我也已经在这里阅读了类似的文章,但是该解决方案对我不起作用。 Can annyone help me? 能帮助我吗?

Try this: 尝试这个:

default=lambda: Country.query.filter(Country.id == '1').one_or_none())

here the complete code of your field definition: 这里是您的字段定义的完整代码:

country = QuerySelectField(query_factory=lambda: Country.query.all(), get_label="name", default=lambda: Country.query.filter(Country.id == '1').one_or_none())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM