问题
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?
回答1:
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.
来源:https://stackoverflow.com/questions/9557394/sort-by-multiple-columns-in-pyqt-model