2015-01-11 32 views
1

在我的程序中,我使用了一個帶有「論文」表的sqlite數據庫。我有幾個QTableviews顯示包含在論文中的數據。每個視圖一個模型。我初始化我的模型是這樣的:將查詢設置爲模型並進一步限制

model.setTable("papers") 

然而,在每個QTableView,我想只顯示一個子集的數據的。這個子集由sql查詢確定。例如:

query = QtSql.QSqlQuery() 
query.prepare("SELECT id FROM papers WHERE new=1") 
query.exec_() 
model.setQuery(query) 

但是,如果我想對子集(而不是整個模型)執行ADDITIONAL查詢,它開始變得非常複雜。所以我想如果有一種方法之一:

  • 定義獲得槽的SQL查詢作爲模型數據的子集
  • 對查詢執行附加查詢

例:

當我選擇new = 1的所有項目後,我希望所有人都有喜歡= 1。

+0

您可以創建一個臨時表。但是,在大多數情況下,您可以將其他子句添加到'where'以獲得優化。 –

+0

是的,但我完全想避免在where語句中添加子句 – Rififi

+1

您可以使用代理模型來添加所需的命令。 – Plouff

回答

0

爲每個視圖使用QSqlTableview。向每個人添加一個模型,就像你一樣。通過在底層選擇where子句中添加例如

model.setfilter(new=1);

該過濾器結果添加額外的過濾的任何表。