1

問題:

Django アプリケーションに、javascript に渡される階層データがいくつかあります。このデータの一部は、javascript 内のいくつかのデータ クラスの状態に基づいて、javascript から除外する必要があります。バックエンド (Django) でフィルターを定義し、JavaScript で適用する方法が必要です。

フィルターは次のようになります。

dataobject.key operator value

フィルターは条件付きにすることもできます。

if dataobject.key operator value 
and dataobject.key2 operator value 
or dataobject.key3 operator value

そして、おそらく次のような条件の任意の組み合わせ:

if (condition and condition) or condition

一部のキーには許可された値のセットがあり、他のキーには自由なテキスト フィールドがあります。このシステムは、ビジネス タイプのエンド ユーザーが使用できる必要があります。そうでなければ、このシステムを使用する意味がありません。主な目標は、エンド ユーザーによって完全に管理されるシステムを持つことです。これらの目標のほとんどが実現できれば、私はそれを勝利と考えます。

ルール エンジンはこのシナリオに適していますか? この動作または明確に定義されたパターンを実装するために利用できる python または django フレームワークはありますか?

更新(S.Lottの回答に基づく):

Django ORM を使用してデータをフィルタリングすることについて話しているのではありません。すべてのデータとすべてのルールを JavaScript に渡したいので、JavaScript アプリケーションは「切断」されたままになります。

私が必要としているのは、ユーザーにこれらのルールとルールの組み合わせを定義させ、それらをデータベースに保存する方法です。次に、ページが読み込まれると、このデータとすべてのルールが取得され、ページに配置されます。ルールの定義は、パズルの重要なピースです。

4

1 に答える 1

0

Django フィルターは簡単に重ねることができます。

initial_query_set = SomeModel.objects.filter( ... some defaults ... )
if got_some_option_from_javascript:
    query_set = initial_query_set.filter( this )
else:
    query_set = initial_query_set
if got_some_other_option:
    query_set = query_set.exclude( that )
if yet_more:
    query_set = query_set.filter( and on and on )

それが標準的なアプローチです。Django ORM クエリ フィルターについて話していない場合は、質問を更新してください。

于 2010-09-20T13:59:28.360 に答える