Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 在QSql中建立与列的关系_Qt_Pyqt5_Qsqldatabase - Fatal编程技术网

Qt 在QSql中建立与列的关系

Qt 在QSql中建立与列的关系,qt,pyqt5,qsqldatabase,Qt,Pyqt5,Qsqldatabase,我试图显示一个QSqlRelationalTableModel,其中包含一个与列的关系 这是我的最小代码: from PyQt5.QtSql import QSqlDatabase, QSqlRelationalTableModel, QSqlRelation from PyQt5.QtWidgets import QApplication, QAbstractItemView, QTreeView from PyQt5.QtCore import QSortFilterProxyModel i

我试图显示一个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列包含表“lending”中某个条目的键“借出”本身有一个用户id,该id与表“ldapuser”中的一个条目有关。最后,“ldapuser”包含“username”,我想在我的micTableModel中显示它


你知道如何在我的micTableModel中建模这样的关系吗?

我不知道是否可以在QSqlRelationalTableModel中建模层次关系。我认为,您需要父表中的所有外键。但您可以在数据库中创建一个视图,该视图包含mic字段之外的lending.user_id,并将此视图用作micTableModel.setTableyourView中的表:


并将relation设置为ldapuser

我不知道是否可以在QSqlRelationalTableModel中建模层次关系。我认为,您需要父表中的所有外键。但您可以在数据库中创建一个视图,该视图包含mic字段之外的lending.user_id,并将此视图用作micTableModel.setTableyourView中的表:

并设置与ldapuser的关系

create view yourView as
select m.*, l.user_id 
from mic m inner join lending l
on m.<name of field 9> = l.id