Фильтр по двум столбцам в QTableView с использованием QSqlTableModel

Для вывода данных из таблицы БД в QTableView использую QSqlTableModel. Для фильтрации по столбцам применяю метод setFilter. Пример используемого кода.

    self.model = QtSql.QSqlTableModel()
    self.ui.tableView.setModel(self.model)
    grid = QtWidgets.QGridLayout(self)
    grid.addWidget(self.ui.lineEdit_2, 0, 0)
    grid.addWidget(self.ui.comboBox_2, 0, 1)
    grid.addWidget(self.ui.tableView, 1, 0, 1, 2)
    self.model.setTable("client")
    self.model.select()
    type_col = QtCore.Qt.Horizontal
    self.ui.comboBox_2.clear()
    for i in range(self.model.columnCount()):
        self.ui.comboBox_2.addItem(self.model.headerData(i, type_col))
    self.ui.lineEdit_2.textChanged.connect(self.filter_table_client)
    headers_view = ["N", "Фамилия", "Имя", "Отчество", "Дата рожд.",
                    "Пол", "Телефон", "Email", "Категория"]
    for i in range(len(headers_view)):
        self.model.setHeaderData(i, Qt.Horizontal, headers_view[i])

def filter_table_client(self, text):
    filter = (" {} LIKE '%{}%'".format(self.ui.comboBox_2.currentText(),
                                       text) if text else text)
    self.model.setFilter(filter)

Фильтр работает.

введите сюда описание изображения

Но результат все равно большой и надо как-то применить дополнительное условие. Возможно ли применять фильтр для двух столбцов? И можно ли вводить в LineEdit фильтрующую строку вида "Иванов Иван" применяя такой метод поиска нужных данных?


Ответы (0 шт):