1

通常のモデル フィールドとして定義されているかのように、カスタムフィルターを作成し、JSONField 内に格納されている値を使用する Django リスト ビューで検索しようとしています。

カスタム関数を使用してモデル マネージャーを定義する必要があると思いますがget_queryset()、json データを "脱水" してクエリセットの一部として返す方法がわかりません。

これまでのところ、他のいくつかのアプローチは失敗しています。 custom のコンテキスト dict に値を挿入できますListViewが、そのコンテキストを照会することはできません。また、admin.py で属性を定義し、models.py でいくつかの @property 定義をラップしてみました。プロパティを照会できないため、ここで同じ問題が発生します。

助言がありますか?

4

2 に答える 2

1

それはできません (とにかく、通常の RDBMS では)。

フィルターは、JSON 内のフィールドについて何も知らないデータベースによって評価されます。これは単なる不透明なブロブです。これらのフィールドを検索する必要がある場合は、それらをデータベースからアクセス可能な適切なデータとして保存する必要があります。

于 2013-07-08T20:16:22.273 に答える