0

PyQt のドキュメントに基づいて、以下のコードを作成しています。

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

3 行目では、すべての都市がリレーションに含まれます。モデル自体ではなく、関係をフィルタリングするにはどうすればよいですか? たとえば、都市には名前 ('X') を付けたいと思います。

4

1 に答える 1

2

リレーションによって参照されるモデルをフィルタリングする必要がありますが、直接呼び出すことができます。あなたの場合:

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

私の知る限り、フィルターはこの関係でインスタンス化されたテーブル (モデル) の「コピー」に影響を与えており、同じテーブルの他のインスタンスには影響しません。

実際、次のようなものがあります。

    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) は同じテーブルを指していますが、2 つの異なるモデルがあり、それぞれに独自のフィルターがあります。

于 2014-01-03T17:59:46.730 に答える