1

列との関係を含む 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_())

の 9 列目にmicTableModelは、テーブル 'lending' のエントリのキーが含まれています。「貸与」自体には、「ldapuser」テーブルのエントリとの関係である user_id があります。最後に、「ldapuser」には「ユーザー名」が含まれていmicTableModelます。

micTableModel でそのような関係をモデル化する方法はありますか?

4

1 に答える 1

0

QSqlRelationalTableModel で階層関係をモデル化できるかどうかはわかりません。親テーブルにすべての外部キーが必要だと思います。ただし、データベースに mic のフィールドに追加されたlending.user_id を含むビューを作成し、このビューを のテーブルとして使用できます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 との関係を設定します

于 2015-07-23T20:23:41.033 に答える