python - Django 中的动态逻辑查询构建器

标签 python django

我在数据库中有 2 个表:

class Param(models.Model):
    s_name = models.CharField(max_length=200)
    n_name = models.CharField(max_length=200)

class ParamValue(models.Model):
    param = models.ForeignKey(Param)
    value = models.IntegerField()
    created = models.DateTimeField(default=datetime.now, blank=True)

我想创建动态构造函数。是否有任何库或方法可以创建动态逻辑过滤器,例如 Apache Lucene 或 Solr? 我的意思是这样的:

dyn_filter = parse("(value < 200 AND value__s_name == 'pressure') 
    OR (value > 10 AND value__s_name == 'depth')")
result = ParamValue.objects.filter(dyn_filer)

最佳答案

Django ORM 具有 Q 对象,允许您使用查询集参数编写逻辑运算 OR

下面的示例完全符合您的文本 ( "(value < 200 AND value__s_name == 'pressure') OR (value > 10 AND value__s_name == 'depth')" ) 的要求:

from django.db.models import Q
ParamValue.objects.filter(
    Q(value__lt=200, param__s_name='pressure') | Q(value__gt=10, param__s_name='depth')
)

关于python - Django 中的动态逻辑查询构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332318/

相关文章:

Python NET 创建通用字典,对象作为值的类型

python - 在数据框列中将负值裁剪为 0 (Pandas)

python - Django - 加载静态数据

python - 类型错误 : "quotechar" must be an 1-character string

python - 如何通过类访问类本身的weakref对象?

python - 如何从 extract_first() 输出中删除 xpath?

python - 我如何在 python 中将一个很长的字符串拆分成一个较短的字符串列表

python - 导入错误位于/admin/

Django admin ImageField : Upload a valid image. 您上传的文件不是图像或损坏的图像

django - 如何个性化 django 管理模板?