2015-10-16 1 views
0

В QsqlRelationalTableModel внешние ключи разрешены для считываемых человеком строк, если установлено отношение для столбца, содержащего внешний ключ. В моем приложении стационарные устройства разрешены к именам станций.Как получить индексное значение столбца с отношением, установленным в QSqlRelationalTableModel?

Для некоторых целей мне тоже нужна станция. QsqlRelationalTableModel.data() или QsqlRelationalTableModel.itemData() возвращают только displayValue (для displayrole, а также для editrole). Как я могу получить соответствующий внешний ключ (indexValue)?

ответ

0

QsqlRelationalTableModel.relationModel() возвращает объект QSqlTableModel для доступа к таблице, для которой столбец является внешним ключом.

http://doc.qt.io/qt-5/qsqlrelationaltablemodel.html#relationModel

По setFilter() методу relationModel() соответствующего идентификатора (indexValue) может быть найден, если displayValue уникален:

rm = self.relationModel(2) 
f = '<columnname> = "{}"'.format(<displayvalue>) 
rm.setFilter(f) 
id = rm.data(rm.index(0,0))