2016-10-27 7 views
0

Вперед за rendering foreign keys as a pulldown in web2py appadmin, Я хотел был бы иметь возможность отображать ссылки ссылок как строки строк в выпадающих списках.Оказание внешних таблиц внешних таблиц в виде строк в раскрывающемся списке в web2py appadmin

Другими словами, предыдущий вопрос касался того, как визуализировать внешние ключи таблицы в виде раскрывающегося списка. Этот вопрос касается внешних ключей внешних ключей .

я теперь в состоянии оказывать внешние ключи таблицы wallet_asset:

db.define_table('wallet_asset', 
    Field('wallet_id', 'reference wallet'), 
    Field('asset_id', 'reference asset'), 
) 

путем определения упомянутых таблиц следующим образом:

db.define_table('asset', 
    Field('name', unique=True, requires=IS_NOT_EMPTY()), 
    Field('description', 'text'), 
       format='%(name)s' 
) 

db.define_table('wallet', 
    Field('name', unique=True, requires=IS_NOT_EMPTY()), 
    Field('description', type='text'), 
    format='%(name)s' 
) 

, но теперь я хочу, чтобы иметь таблицу user_wallet_asset :

db.define_table('user_wallet_asset', 
    Field('user_id', 'reference auth_user'), 
    Field('wallet_asset_id', 'reference wallet_asset'), 
    Field('address') 
) 

И когда я введите записи с помощью AppAdmin, я хочу поле wallet_asset_id для визуализации в выпадающем меню в виде строки на основе представления внешних ключей в таблицах wallet and asset`, что-то вроде:

asset.name проводится в wallet.name

причиной этого является не просто в том, что user_wallet_asset ссылки wallet_asset которые затем References wallet и asset.

Предположительно окончательное решение выглядит примерно так:

db.define_table('wallet_asset', 
    Field('wallet_id', 'reference wallet'), 
    Field('asset_id', 'reference asset'), 
    format='%(asset_id).name is held in %(wallet_id).name' 
) 

ответ

1

format аргумент может принимать функцию, которая генерирует значения, которые вы хотите:

db.define_table('wallet_asset', 
    Field('wallet_id', 'reference wallet'), 
    Field('asset_id', 'reference asset'), 
    format=lambda r: '%s is held in %s' % (r.asset_id.name, r.wallet_id.name)) 

Примечание, r.asset_id.name и r.wallet_id.name включают recursive selects, так когда выпадающее меню создается для поля db.user_wallet_asset.wallet_asset_id, для каждого элемента в раскрывающемся списке будут два выбора базы данных.

Для получения дополнительной информации, вы можете найти this answer полезной.

 Смежные вопросы

  • Нет связанных вопросов^_^