问题描述:

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.

相关阅读:
Top