user191776
user191776

Reputation:

Sort by Multiple Columns in PyQt Model

I want to use the PyQt equivalent of the following SQL statement in my model/view-based PyQt application:

SELECT * FROM table ORDER BY foo, bar

How do I sort by multiple columns in a QSqlTableModel, especially since setSort() accepts a single column argument?

Upvotes: 1

Views: 2118

Answers (1)

user191776
user191776

Reputation:

It seems there's an alternative to setSort(), called setFilter(). From the PyQt docs:

QSqlTableModel.setFilter (self, QString filter)

Sets the current filter to filter.

The filter is a SQL WHERE clause without the keyword WHERE (for example, name='Josephine').

Ergo, this solves the problem:

fooModel.setFilter("never_zero != 0 ORDER BY foo, bar")

where the never_zero field is (surprise, surprise) never zero.

Upvotes: 2

Related Questions