I dunno something with colors
This commit is contained in:
38
lib/qsqlmod.py
Normal file
38
lib/qsqlmod.py
Normal file
@@ -0,0 +1,38 @@
|
||||
#modifie the QSqlQueryModel to be editable and sets them to the database
|
||||
|
||||
#credits to :
|
||||
#https://stackoverflow.com/questions/49752388/editable-qtableview-of-complex-sql-query
|
||||
|
||||
|
||||
class SqlQueryModel_editable(QSqlQueryModel):
|
||||
"""a subclass of QSqlQueryModel where individual columns can be defined as editable
|
||||
"""
|
||||
def __init__(self, editables):
|
||||
"""editables should be a dict of format:
|
||||
{INT editable_column_nr : (STR update query to be performed when changes are made on this column
|
||||
INT model's column number for the filter-column (used in the where-clause),
|
||||
)}
|
||||
"""
|
||||
super().__init__()
|
||||
self.editables = editables
|
||||
|
||||
def flags(self, index):
|
||||
fl = QSqlQueryModel.flags(self, index)
|
||||
if index.column() in self.editables:
|
||||
fl |= Qt.ItemIsEditable
|
||||
return fl
|
||||
|
||||
def setData(self, index, value, role=Qt.EditRole):
|
||||
if role == Qt.EditRole:
|
||||
mycolumn = index.column()
|
||||
if mycolumn in self.editables:
|
||||
(query, filter_col) = self.editables[mycolumn]
|
||||
filter_value = self.index(index.row(), filter_col).data()
|
||||
q = QSqlQuery(query.format(value, filter_value))
|
||||
result = q.exec_()
|
||||
if result:
|
||||
self.query().exec_()
|
||||
else:
|
||||
print(self.query().lastError().text())
|
||||
return result
|
||||
return QSqlQueryModel.setData(self, index, value, role)
|
||||
Reference in New Issue
Block a user