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.