0

私はから持っていて、データベースからの情報と入力されたフィールドに基づいて自動的に入力したい:

db_wizard.py で

db.define_table('receiver',
  Field('name'), # e.g. Daniel
  Field('email'),# e.g. daniel@daniel.com
  Field('opening'), # e.g. Dear Daniel
  ...)           

db.define_table('sender',
  Field('name'),  # e.g. John
  Field('email'), # e.g. John@john.com
  Field('tel'),   # e.g. 111 222 111
  ...)

db.define_table('letter',
  Field('sender', db.sender.id),     # e.g. Daniel
  Field('receiver', db.receiver.id), # e.g. John
  Field('opening'), # should be filled automatically when choosing/changing the value of "receiver"
  ...)

plugin_lazy_widget を使用します

db.letter.opening.widget = suggest_widget(db.receiver.opening, id_field=db.i2l_receiver_profile.id, 
                                          limitby=(0,10), min_length=1, db=db(db.i2l_receiver_profile.user_id==auth.user_id))

しかし、このウィジェットや web2py_autocomplete_widget でさえ、ID選択されたレコードの を常に返します! 上記の例のように、実際に「オープニング」に入れるものでは1ありません。Dear Daniel

4

2 に答える 2

0

Suggest_widget (または組み込みのオートコンプリート ウィジェット) を使用したくないと思います。代わりに、ユーザーがレシーバーを選択するとすぐに「開始」フィールドに動的に入力する必要があります。そのためには、lazy_options_widgetの修正版が必要になる可能性があります(suggest_widget とは併用しません)。

また、「opening」フィールドで id_field を使用することは、参照フィールドではないため適切ではないことに注意してください (したがって、参照する関連 ID はありません)。

于 2011-10-10T00:18:35.120 に答える
0

代わりは :

db.letter.opening.widget = suggest_widget(db.receiver.opening, id_field=db.i2l_receiver_profile.id, 
                                          limitby=(0,10), min_length=1, db=db(db.i2l_receiver_profile.user_id==auth.user_id))

使用する:

db.letter.opening.widget = suggest_widget(db.receiver.opening, 
                                          limitby=(0,10), min_length=1, db=db(db.i2l_receiver_profile.user_id==auth.user_id))

つまり、" id_field" を定義しないと、それを防ぐことができます

于 2011-10-17T21:31:29.777 に答える