primeInsert() and setValue not working QSqlRelationalTableModel



  • Hi Everyone,

    I am using QSqlRelationalTableModel. I have subclass the model. I am using editStrategy onManualSubmit.
    This is the code I have so far. What is not working is the default values. I am using primeInsert so that dataChanged is not emitted each time insertRows is called. Why is setValue not working? Is this almost right?

    class AppField(QtGui.QDialog, ui_app_field.Ui_AppFieldDialog):
        def __init__(self, database = None, table = None, parent = None):
            super(AppField, self).__init__(parent)
            self._table = table
            self._dbfname = database
            self.setupUi(self)
            # subclassed sqlrelationaltablemodel.
            self.model = AppModel(table = self._table, parent = self)
            self.app_field_tableView.setModel(self.model)
    
            self.add_row_pushButton.clicked.connect(self.add_row)
            self.model.primeInsert.connect(self.default_val)
            self.model.dataChanged.connect(self.submit)
    
        def submit(self, index):
            print "help"
            id = self.model.data(self.model.index(index.row(), ID))
            app_alias = self.model.data(self.model.index(index.row(), ALIAS))
            app_field = self.model.data(self.model.index(index.row(), APP_FIELD))
            app_def = self.model.data(self.model.index(index.row(), APP_DEF))
            if self.model.isDirty(self.model.index(index.row(), ALIAS)) or app_alias != "Event Alias Name":
                if self.model.isDirty(self.model.index(index.row(), APP_FIELD))  or app_field != "Event name":
                    if self.model.isDirty(self.model.index(index.row(), APP_DEF)) or app_def != "Event Definition":
                        self.model.submitAll()
                        if self.model.lastError().isValid():
                            if self.model.lastError().text() == "column app_field_alias is not unique Unable to fetch row":
                                self.model.revertAll()
                                ms = self.model.lastError().text()
    
    
        def default_val(self, rec):
            """
            add default values to the table. I can not use setData because that
            will emit dataChanged.
            This is not working.
            """
            query = QtSql.QSqlQuery()
            query.exec_("SELECT id from in_gtlf")
            if query.next():
                gtlf_id = query.value(0).toInt()[0]
                record = self.model.record(rec)
                record.setValue(1, "Event Alias Name")
                record.setValue(2, "Event name")
                record.setValue(3, "Event Definition")
                record.setValue(4, gtlf_id)
    
    
    
        def add_row(self):
            """
            This method adds rows to the model.
            """
            row = self.model.rowCount()
            if self.model.lastError().isValid():
                ms = self.model.lastError().text()
                QtGui.QMessageBox.warning(self,"warning", ms, QtGui.QMessageBox.Ok)
            else:
                self.model.insertRows(row, 1)
                self.model.submitAll()
                index = self.model.index(row, 1)
                if index.isValid():
                    self.app_field_tableView.edit(index)
            self.resizeRow()


  • Am I trying to do this incorrectly?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.