Как получить значение индекса столбца с отношением, установленным в QSqlRelationalTableModel?

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

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


person a_manthey_67    schedule 16.10.2015    source источник


Ответы (1)


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

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

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

rm = self.relationModel(<index column>)
f = '<columnname> = "{}"'.format(<displayvalue>)
rm.setFilter(f)
id = rm.data(rm.index(0,0))
person a_manthey_67    schedule 16.10.2015