私はweb2pyでこのようなモデルを持っています:
db.define_table('courses',
Field('course_name','string'))
db.define_table('auth_user',
....
....
Field('course_name',db.courses,label=T('Course Name'),
required=True,
requires=IS_IN_DB(db,db.courses.id,'%(course_name)s'),
auth_user テーブルに基づいてフォームを表示すると、auth_user.course_name
フィールドはテーブル内のすべてのコースを含むドロップダウン メニューで表されcourses
ます。courses.course_name
予想どおり、フィールドではなくフィールドの内容を使用してそれらを表示しますcourses.ID
(IS_IN_DB 要件の文字列形式表現のため)。
ただし、ドロップダウン選択メニューを使用する代わりに、テキストフィールドを表示するように変更しようとしています。ユーザーがコースの名前を入力できることを期待しています。その名前が有効である限り、フォームは適切に機能しますcourse_name
。
そのために、フィールドにwidget=SQLFORM.widgets.string.widget
プロパティを追加しました。auth_user.course_name
これにより、ドロップダウンの代わりにテキスト ボックスが正しく表示されますが、ユーザーはcourse_name
. 有効な ID が入力された場合は問題なく動作しcourses.id
ます (有効な ID でない場合は、予想されるエラー メッセージが表示されます)。
course_name
ただし、 ID の代わりにa を受け入れる方法がわかりません。理論的にはオートコンプリート プラグインを使用することもできますが (これは実際に機能します)、これの目的は、ユーザーが有効なものcourse_name
(パスワードのようなもの) を知っている場合にのみフォームを送信できるようにすることです。
これは可能ですか?