0

this time I want to change the default index of the QSqlTableModel that I have, in addition to the code, I attach an image of the result.

My code is:

import sys
from PyQt6.QtCore import Qt, QSize
from PyQt6.QtSql import QSqlTableModel, QSqlDatabase
from PyQt6.QtWidgets import QApplication, QTableView

class CustomSqlModel(QSqlTableModel):
    def __init__(self, parent=None):
        QSqlTableModel.__init__(self, parent=parent)
        self.setTable("entities")
        self.setEditStrategy(QSqlTableModel.EditStrategy.OnFieldChange)
        self.select()
    def data(self, item, role):
        val = QSqlTableModel.data(self, item, role)
        if role == Qt.ItemDataRole.DisplayRole or role == Qt.ItemDataRole.EditRole:
            if item.column() == 3:
                try:
                    return str(int(val))
                except ValueError:
                    pass
        if role == Qt.ItemDataRole.DisplayRole or role == Qt.ItemDataRole.EditRole:
            if item.column() == 2:
                try:
                    return str(int(val))
                except ValueError:
                    pass
        return val


if __name__ == '__main__':
    app = QApplication(sys.argv)
    db = QSqlDatabase.addDatabase('QPSQL')
    db.setDatabaseName("impulsadb")
    db.setHostName('myhost')
    db.open('myid','mypass')
    model = CustomSqlModel()
    view = QTableView()
    view.resizeColumnsToContents()
    view.setBaseSize(600,800)
    view.setModel(model)
    view.setWindowTitle("Custom Model")
    view.show()
    sys.exit(app.exec())

By placing my host and my credentials, the following results in this model

I want to set entity_id column as index column.

Raknaros
  • 45
  • 6
  • @Alexander How i can implement this? I try pass and str without success as a self.setPrimaryKey('entity_id') – Raknaros Feb 15 '23 at 08:53

0 Answers0