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 回答