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?
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.