与Sql中的列建立关系
Make a relation to a relation to a column in QSql
我正在尝试显示 QSqlRelationalTableModel 与列的关系。
这是我的最小代码:
from PyQt5.QtSql import QSqlDatabase, QSqlRelationalTableModel, QSqlRelation
from PyQt5.QtWidgets import QApplication, QAbstractItemView, QTreeView
from PyQt5.QtCore import QSortFilterProxyModel
import sys
app = QApplication(sys.argv)
db = QSqlDatabase().addDatabase('QMYSQL')
[...]
db.open()
micTableModel = QSqlRelationalTableModel(None, db)
micTableModel.setTable('mic')
micTableModel.setRelation(1, QSqlRelation('equipmentgroup', 'id', 'name'))
micTableModel.setRelation(9, QSqlRelation('lending', 'id', 'XXX')) #### <-- PROBLEM
micTableModel.select()
filterModel = QSortFilterProxyModel()
filterModel.setSourceModel(micTableModel)
widget = QTreeView()
widget.setModel(filterModel)
widget.setSortingEnabled(True)
widget.setRootIsDecorated(False)
widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
widget.show()
sys.exit(app.exec_())
micTableModel
的第 9 列包含 table 'lending' 中条目的键。 'lending' 本身有一个 user_id,它与 table 'ldapuser' 中的条目有关系。最后 'ldapuser' 包含 'username',我想在我的 micTableModel
中显示它。
知道如何在我的 micTableModel 中模拟这种关系吗?
我不知道是否可以在 QSqlRelationalTableModel 中对层次关系建模。我认为,您需要父 table 中的所有外键。但是您可以在数据库中创建一个视图,其中包含 lending.user_id 附加到 mic 字段并将此视图用作 table in micTableModel.setTable(yourView)
:
create view yourView as
select m.*, l.user_id
from mic m inner join lending l
on m.<name of field 9> = l.id
并设置与 ldapuser 的关系
我正在尝试显示 QSqlRelationalTableModel 与列的关系。
这是我的最小代码:
from PyQt5.QtSql import QSqlDatabase, QSqlRelationalTableModel, QSqlRelation
from PyQt5.QtWidgets import QApplication, QAbstractItemView, QTreeView
from PyQt5.QtCore import QSortFilterProxyModel
import sys
app = QApplication(sys.argv)
db = QSqlDatabase().addDatabase('QMYSQL')
[...]
db.open()
micTableModel = QSqlRelationalTableModel(None, db)
micTableModel.setTable('mic')
micTableModel.setRelation(1, QSqlRelation('equipmentgroup', 'id', 'name'))
micTableModel.setRelation(9, QSqlRelation('lending', 'id', 'XXX')) #### <-- PROBLEM
micTableModel.select()
filterModel = QSortFilterProxyModel()
filterModel.setSourceModel(micTableModel)
widget = QTreeView()
widget.setModel(filterModel)
widget.setSortingEnabled(True)
widget.setRootIsDecorated(False)
widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
widget.show()
sys.exit(app.exec_())
micTableModel
的第 9 列包含 table 'lending' 中条目的键。 'lending' 本身有一个 user_id,它与 table 'ldapuser' 中的条目有关系。最后 'ldapuser' 包含 'username',我想在我的 micTableModel
中显示它。
知道如何在我的 micTableModel 中模拟这种关系吗?
我不知道是否可以在 QSqlRelationalTableModel 中对层次关系建模。我认为,您需要父 table 中的所有外键。但是您可以在数据库中创建一个视图,其中包含 lending.user_id 附加到 mic 字段并将此视图用作 table in micTableModel.setTable(yourView)
:
create view yourView as
select m.*, l.user_id
from mic m inner join lending l
on m.<name of field 9> = l.id
并设置与 ldapuser 的关系