Моя сетка отображает продукты с LEFT OUTER JOIN, чтобы показать дополнительную информацию, если продукт уже выбран.Web2py SQLFORM.grid Выбор поля, но не отображаемого в сетке
Все работает отлично.
Теперь я хочу добавить описание продукта в атрибут title названия продукта. Итак, когда пользователь нажимает (мыши над?) На имя, отображается описание.
db.product.productname.represent = lambda value, row: A(value, _href=URL('offer', 'view_product', args=row.product.id), _title=row.product.description)
Это работает, когда описание db.product.description включено в поля в сетке. Но тогда также отображается столбец, чего я не хочу. Когда я устанавливаю .readable = False. Столбец не отображается, но описание также не отображается.
Я также попытался использовать заголовки, чтобы указать только поля, которые я хочу отобразить, но он по-прежнему показывает столбец описания.
Как я могу включить поле в запрос, но не показывать его в сетке?
Вот вся сетка:
pagecontent = SQLFORM.grid(query,
left=db.product_offer_item.on((db.product.id == db.product_offer_item.product_id)\
& (db.product_offer_item.offer_id == currentquote)),
args=[groupid],
create=False,
editable=False,
deletable=False,
details=False,
csv=False,
orderby=db.product.productname,
fields=[db.product.productname,
db.product.purchasecost,
db.product.monthlycost,
db.product_offer_item.optional,
db.product_offer_item.quantity,
db.product_offer_item.discount,
db.product.description # Here is the problem field
],
# headers={'product.productname' : db.product.productname.label,
# 'product.purchasecost' : db.product.purchasecost.label,
# 'product.monthlycost' : db.product.monthlycost.label,
# 'product_offer_item.optional' : db.product_offer_item.optional.label,
# 'product_offer_item.quantity' : db.product_offer_item.quantity.label,
# 'product_offer_item.discount' : db.product_offer_item.discount.label},
maxtextlength = 100,
links=[lambda row: A(T('Update'),
_href='#',
_class='button btn btn-default',
_id=row.product.id,
_name='btnUpdate')
]
)
Кнопка обновления не имеет никакой связи, поскольку она обрабатывается JS, чтобы обойти эту проблему, чтобы не быть в состоянии сделать каждую строку его собственной формы.