kuroの覚え書き

96の個人的覚え書き

SelectMultipleFieldでなくBooleanFieldを使って複数選択

これまで、複数項目を選択してORで検索項目に使うとき

    func = SelectMultipleField('Function', choices=[('exonic', 'exonic'), ('splicing', 'splicing'),・・・・

    if form.func.data:
        exome = exome.filter(Exome_sub.Func_wgEncodeGencodeCompV19.in_(form.func.data))


このようにSelectMultipleFieldを使っていたのだが、使い勝手が悪く、見た目もぱっとしないので、チェックボックスを並べて使う方法を検討した。

    fnc1 = BooleanField('exonic')
    fnc2 = BooleanField('splicing')
........
........
    fnc = []
    if form.fnc1.data:
        fnc.append("exonic")
    if form.fnc2.data:
        fnc.append("splicing")
.......
.......
    if fnc:
        exome = exome.filter(Exome_sub.Func_wgEncodeGencodeCompV19.in_(fnc))

こんな感じで同等の機能になる。
これを昨日のアコーディオンと併用するとドロップダウンリスト風に項目を展開して、複数項目を選択できるため、ひと目で何が選ばれているかがわかってよろしい。