如何获取QSqlRelationalTableModel中设置关系的列的索引值?

时间:2015-10-16 18:06:51

标签: foreign-key-relationship pyqt5 qtsql

如果设置了包含外键的列的关系,则在QsqlRelationalTableModel外键被解析为人类可读的字符串。在我的应用中,stationids被解析为站名。

出于某些目的,我也需要这个。 QsqlRelationalTableModel.data()QsqlRelationalTableModel.itemData()仅返回displayValue(用于displayrole和editrole)。我如何获得相应的外键(indexValue)?

1 个答案:

答案 0 :(得分:0)

  

QsqlRelationalTableModel.relationModel()返回一个QSqlTableModel对象,用于访问其列为外键的表。

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

如果displayValue是唯一的,可以通过setFilter() relationModel()方法找到相应的id(indexValue):

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