如何在django过滤器中做小于或等于和大于等于?

Moh*_*med 6 python django postgresql

如何在django过滤器中做小于或等于和大于等于?就像,我想获得价值: - 10<=val<=50在django视图.
为此,我在sql中使用了一些查询:

select count(*) from table_name where gender='MALE' and age<=50 and age>=10;
Run Code Online (Sandbox Code Playgroud)

我在django视图中尝试过类似的东西: -

tablename.objects.filter(Q(gender='MALE'),Q(age__lte=50) & Q(age__gte=10)).count()
Run Code Online (Sandbox Code Playgroud)

但我得到了不同的价值观.在sql我得到65和django我得到29. sql答案是正确的.请帮我在django视图中做比较.

mik*_*keb 14

你为什么不使用_range函数?

filter(gender='MALE', age__range=(10, 50))

请参见:https: //docs.djangoproject.com/en/1.7/ref/models/querysets/#range


dor*_*oru 10

如果你真的想用>=,<=你可以写:

Modelname.objects.filter(gender='MALE', age__gte = 10, age__lte = 50).count()
Run Code Online (Sandbox Code Playgroud)