In QsqlRelationalTableModel
foreign keys are resolved to human readable strings, if a relation for the column containing a foreign key is set. In my application stationids are resolved to stationnames.
For some purposes i need the stationid too. QsqlRelationalTableModel.data()
or QsqlRelationalTableModel.itemData()
only return the displayValue (for displayrole as well as for editrole). How can i get the corresponding foreign key (indexValue)?
QsqlRelationalTableModel.relationModel() returns a QSqlTableModel object for accessing the table for which column is a foreign key.
http://doc.qt.io/qt-5/qsqlrelationaltablemodel.html#relationModel
By the setFilter()
method of relationModel()
the corresponding id (indexValue) can be found, if the displayValue is unique:
rm = self.relationModel(<index column>)
f = '<columnname> = "{}"'.format(<displayvalue>)
rm.setFilter(f)
id = rm.data(rm.index(0,0))