2012-03-04 3 views
1

私は私のモデル/ビューベースPyQtアプリケーションで次のSQL文のPyQt同等のものを使用したい:ソート

SELECT * FROM table ORDER BY foo, bar 

私はQSqlTableModelでソート複数のカラムで行う方法、特にsetSort()は単一のcolumn引数を受け入れますか?

答えて

1

と呼ばれるsetSort()の代替品があるようです。 PyQtはドキュメントから :

QSqlTableModel.setFilter(自己、QStringのフィルタは)

フィルタする現在のフィルタを設定します。

フィルタは、キーワードWHERE( の例では、name = 'Josephine')のないSQL WHERE句です。

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

never_zeroフィールドがある(驚き、驚き)は決してゼロ:

エルゴは、この問題を解決します。

+1

これは不正行為によく似ており、誤解を招く可能性があります。通常、フィルタでクエリをソートすることは期待していません。 'QSqlTableModel'は、複雑なクエリが必要なときに限られています。 'QSqlQueryModel'がオプションになります。書き込みアクセスが必要な場合は、サブクラス化して適切なメソッドを提供できます。または、あなたのデータセットがそれほど大きくない場合は、カスタムの 'QSortFilterProxyModel'を間に置くことを検討するかもしれません。元の 'QSortFilterProxyModel'もソートのための単一の列を期待しているので、それはカスタムである必要がありますが、独自のソート実装をサブクラス化して提供するのはむしろ簡単です。 – Avaris