Django应用程序中的嵌套过滤器

时间:2017-09-08 00:59:31

标签: python django

我的Django App中有下一个模型:

mailto:hola@correo.jp

现在,我需要过滤所有“Value”对象,其中变量“A”小于20,变量“B”小于4,例如。

我正在尝试以这种方式过滤,但不起作用(变量和值是动态的,用户可以在视图中选择它们的组合):

class Value(models.Model):
    entity = models.ForeignKey('Entity',on_delete=models.CASCADE, related_name='entity')
    variable = models.ForeignKey('Variable',on_delete=models.CASCADE, related_name='variable')
    value = models.FloatField(default=0)

编辑:

我使用原始SQL查询(entity.objects.raw(sql))解决了这个问题:

entity_list = Value.objects.all().filter(variable__symbol='A', value__lte=20)

entity_list = entity_list.objects.all.filter(variable_symbol='B', value_lte=4)

我可以使用ORM进行相同的操作,但是没有原始的SQL查询吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

views.py

from django.db.models import Q


entity_list = Value.objects.filter( Q (Q(variable__symbol='A') & Q(value__lte=20)) &
                                    Q (Q(variable__symbol='B') & Q(value__lte=4)))