PyQT5 : Création d'une liste à partir d'un QSqlRelationalTableModel
Bonjour,
J'utilise deux QTableView l'un affiche les clients et l'autre affiche les informations détaillées pour chaque clients par l'intermédiaire de la fonction setfilterphases
Pour le moment, il n'y a pas de problème chaque enregistrement sélectionné dans le premier tableau, le second affiche ces données.
Ce que demande, c'est comment afficher les informations détaillées pour chaque clients dans une list [] comme ceci : (111111, 222222, 333333, '2018-12') à partir du QSqlRelationalTableModel du deuxième QTableView.
Autrement dit, adapter le code python ci-dessous en PyQt :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
c.execute("SELECT phase1, phase2, phase3, date FROM tmp1 WHERE reference=id")
data = c.fetchall()
phase1 = []
phase2 = []
phase3 = []
date = []
print(data)
for row in data:
print(row)
phase1.append(row[0])
phase2.append(row[1])
phase3.append(row[2])
date.append(row[3]) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#Liste Clients
self.modellistemenu = QSqlRelationalTableModel(self)
self.modellistemenu.setTable("clients")
self.modellistemenu.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
self.modellistemenu.select()
self.modellistemenu.setSort(0, Qt.AscendingOrder)
self.ui.tableViewmenu.setSortingEnabled(False)
self.ui.tableViewmenu.resizeColumnsToContents()
self.ui.tableViewmenu.setModel(self.modellistemenu)
self.ui.tableViewmenu.selectionModel().currentRowChanged
self.modellistemenu.setRelation(0,QSqlRelation('tmp1', 'reference', ' ')) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#Affichage Phases
self.modellistetmp1 = QSqlRelationalTableModel(self)
self.modellistetmp1.setTable("tmp1")
self.modellistetmp1.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
self.modellistetmp1.select()
self.modellistetmp1.setSort(0, Qt.AscendingOrder)
self.ui.tableViewrelevephases.setSortingEnabled(True)
self.ui.tableViewrelevephases.resizeColumnsToContents()
self.ui.tableViewrelevephases.setModel(self.modellistetmp1)
self.ui.tableViewmenu.clicked.connect(self.setfilterphases) |
Code:
1 2 3 4 5
|
def setfilterphases(self, index):
reference=self.modellistemenu.data(self.modellistemenu.index(index.row(),0, QModelIndex()))
self.modellistetmp1.setFilter("reference = {}".format(reference))
self.ui.tableViewrelevephases.setModel(self.modellistetmp1) |
Merci