如何使用PyQt过滤QSqlRelationaltableModel?

时间:2013-09-10 10:35:41

标签: python qt pyqt qtsql

我根据PyQt文档获得以下代码:

  model = QSqlRelationalTableModel()
  model.setTable("employee")
  model.setRelation(2, QSqlRelation("city", "id", "name"))
  model.setRelation(3, QSqlRelation("country", "id", "name"))

第三条线将把所有城市都带到关系中。我如何过滤关系,而不是模型本身?例如,我希望城市有名称('X')。

1 个答案:

答案 0 :(得分:1)

您必须过滤关系所引用的模型,但您可以直接调用它;在你的情况下:

    model.relationModel(2).setFilter("city like 'x'");

AFAIK,过滤器正在影响在此关系中实例化的表(模型)的“副本”,它不会影响同一个表的任何其他实例。

事实上,你可以这样:

    model.setRelation(2, QSqlRelation("city", "id", "name"))
    model.setRelation(4, QSqlRelation("city", "id", "name"))

    model.relationModel(2).setFilter("city like 'x'");
    model.relationModel(4).setFilter("city like 'y'");

关系(2)和(4)指向同一个表,但它们有两个不同的模型,每个模型都有自己的过滤器。