2016-12-09 19 views
2

特定のドロップダウンオプションが選択されている場合、WTFForm QuerySelectFieldの値を保持するためのきれいな方法を探しています。この考え方は、QuerySelectFieldドロップダウンから選択された特定の技術に従ってプロジェクトのリストをフィルタリングすることです。私が取ったアプローチは、/ projects?id = 5というドロップダウンのon changeイベントを使用して、テクノロジーIDを持つクエリ文字列を含む/ projectsにgetリクエストを送信することです。 -要求を取得した後にWTForm QuerySelectFieldの値を維持する

$('#technology').on('change', function() { 
     var technology = $("#technology").value; 
     window.location.href="/projects?id=" + technology_id; 
     window.history.pushState('obj', 'newtitle', '/projects'); 
    }); 

ちょうど私は、要約する

プロジェクトroute-

@app.route('/projects', methods=['GET', 'POST']) 
def projects(): 
    list_of_projects = None 
    form = ProjectForm(request.form) 
    technology_id = request.args.get('id') 
    if technology_id: 
     list_of_projects = connect.project(technology_id) 
    if request.method == 'GET': 
     if list_of_projects: 
      connect.close_connection() 
      return render_template("projects.html", 
            list_of_projects = list_of_projects, form = form) 
     else: 
      return render_template("projects.html", form=form) 

JSプロジェクト

class ProjectForm(ProjectFormBase): 
    title = StringField('Title', [validators.Length(min=4, max=25), validators.DataRequired()]) 
    technology = QuerySelectField('Technology', query_factory= connect.technology_choices, 
        get_pk=lambda a: a.id, 
        get_label=lambda a: a.name, allow_blank=True, blank_text=u'Select a technology...') 

フォーム - : 私はそれは次のように構成されていオンの変更イベントの後に選択されたドロップダウンメニューの値を探します。私はまた、クエリ文字列の値を渡すのではなく、まったく別のアプローチにもオープンしています。

答えて

0

私が正しく理解していれば、ページがGET arg idが設定されているときに技術選択フィールドを設定するだけで済みます。このようなものがうまくいくはずです:

また、PythonのEAFPデザインの原則に合うようにいくつかのコードを削除することもお勧めします。

関連する問題