我的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查询吗?
提前谢谢。
答案 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)))