我是一个来自我想根据数据库和填充字段中的信息自动填充它:
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
答案 0 :(得分:0)
我认为你不想使用suggest_widget(或内置的自动完成小部件)。相反,您希望在用户选择接收器后立即动态填写“打开”字段。为此,您可能需要lazy_options_widget的修改版本(不与suggest_widget一起使用)。
另外,请注意,使用带有'opening'字段的id_field无论如何都不合适,因为它不是引用字段(因此没有相关的id引用)。
答案 1 :(得分: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
”会阻止它