ユーザーがデータベーステーブルを選択するためのドロップダウンメニューを用意しようとしています。db.py でいくつかのテーブルを定義しましたが、ユーザーがドロップダウン メニューから特定のテーブルを選択してエントリを挿入できるようにしたいと考えています。今私はSQLFORMを使用しています:
def index():
form=SQLFORM(db.selectedtable) #want to change the table name#
if form.process().accepted:
response.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill out the form'
return dict(form=form)
DB で使用可能なすべてのテーブルを表示するドロップダウン リストから、ユーザーが「selectedtable」値を選択する必要があります。DB からテーブルの値を取得する必要はありません。利用可能なテーブルのリストを定義しても問題ありません。ドロップダウン メニューは、そのリストからテーブル名を取得できます。これまでのところ、ドロップダウンと PluginDropdown() を自動的に作成する IS_IN_DB しか見つかりませんでしたが、それは私の目的を果たしません。誰かがこのタスクを処理する適切な方法に私を導くことができれば、私は本当に感謝しています.
よろしく。
アップデート:
Anthony の提案の後、私は JS にあまり詳しくないので、次のことを で試しました。
{{extend 'layout.html'}}
{{select='NONE'}}
<form>
<select>
{{for item in TOOLS:}}
<option value="{{select=item}}">{{=item}}</option>{{pass}}
</select>
<input type="submit" value="Go!"/>
</form>
<h2>Input form</h2>
{{=form}}
<h2>{{=select}}</h2>
ご覧のとおり、これは正しく機能しません。私がやろうとしたことは、ユーザーが選択した値を「選択」変数に取得することです。しかし、うまくいきません。常に ITEMS の最後の要素を取得します (このリストは db.py で定義されています)。私の次のオプションは、ユーザーが選択した値を引数として渡して、別のコントローラー関数を呼び出すことです。次に、渡された値でフォームを準備し、ビューに送信して表示できます
<h2>Input form</h2>
{{=form}}
しかし、ユーザーが選択した値を引数に割り当てて、その引数値で別のコントローラー関数を呼び出す方法がわかりません。ユーザーが選択した値を取得するためにこれを変更する方法について何か提案があれば、非常に感謝しています。ありがとうございました。