0

私は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(パスワードのようなもの) を知っている場合にのみフォームを送信できるようにすることです。

これは可能ですか?

4

1 に答える 1