web2py автозаполнение / автозаполнение возвращает идентификатор - PullRequest
0 голосов
/ 09 октября 2011

Я получил от и хочу заполнить его автоматически на основе информации из базы данных и заполненных полей:

в 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

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

вместо:

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" предотвратит это

0 голосов
/ 10 октября 2011

Не думаю, что вы хотите использовать предложить_widget (или встроенный виджет автозаполнения). Вместо этого вы хотите, чтобы поле «открытия» динамически заполнялось, как только пользователь выбирает получателя. Для этого вам, вероятно, понадобится измененная версия lazy_options_widget (не используется в сочетании с offer_widget).

Кроме того, обратите внимание, что использование поля id_ с полем «открытие» в любом случае не подходит, поскольку оно не является полем ссылки (поэтому для ссылки не существует идентификатора).

...