我有一个 QSqlRelationalTableModel
设置,其中的 QSqlRelation
到另一个表工作得很好。现在,我想在相关表上查找该行的其他列。我该如何实现这个目标?
示例表:
city ('id', 'name', 'state_id')
state ('id', 'name', 'capital')
到目前为止我所拥有的:
model = QtSql.QSqlRelationalTableModel()
model.setTable('city')
model.setRelation(2, QtSql.QSqlRelation("state", "id", "name"))
model.select()
这会给我一行像:
| 1 | 'San Francisco' | 'California' |
现在我想从城市表中查找州模型中的首都。我该怎么做呢?我对 setRelation 的理解是,它从 X 列的 main_table 中获取 id 并将其替换为映射列,但我不想更改状态表。我已经研究了 QSqlRecord
和 QSqlRelation
,但我似乎遗漏了一些东西。
谢谢!
最佳答案
当您想要显示的表中有外键时,
QSqlRelationalTableModel
非常有用。在您的情况下,capital
不是city
表的列。
您应该使用 QSqlQueryModel
和 JOIN
这两个表来获取您想要的列。像这样的东西应该可以工作
model = QtSql.QSqlQueryModel()
model.setQuery("SELECT city.id, city.name, state.name, state.capital FROM city "
"INNER JOIN state ON city.state_id = state.id");
model.select()
关于python - QSqlRelationalTableModel 附加相关列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437055/