2

序文

個別のフィールド セット (フィールド モデル) を持つオブジェクト (オブジェクト モデル) が必要です。名前とタイプが含まれています (図を参照)。Object と Field の間の各接続には、フィールドの値が格納されます。値のデータ型は Field type プロパティに依存し、物理的に値は定義済みの db 列 (value_number、value_text、...) の 1 つに格納されます。

どのように動作させたいか:

field = Field.objects.get(pk=1)
sought_for = Object.fields.filter(field=field, value='test')

例と同じように単純に QuerySet に入れることができるフィールドを作成する方法はありますか?実際には、フィールドのタイプに応じて、異なる db 列または列を使用します。その値を格納するために複数の列を必要とします。

PS いくつかの EAV アプリケーションを試しましたが、私の場合には複雑すぎるようでした。

ダイアグラム:

  • フィールドモデル、フィールドの名前とタイプを保存します
  • FieldValue、フィールドの値が格納されるモデル。

データベースの実現をどのように見るか

UPD:最終的に、Postgres (または任意のリレーショナル データベース) を使用するアプローチそのものが最良の選択ではないという考えに至りました。これをMongoDBに簡単に実装しました。

4

0 に答える 0