检查F对象的结果是否大于零

时间:2014-12-15 08:56:59

标签: python django django-queryset

是否可以仅过滤bitand大于零后具有字段的记录?类似的东西:

MyModel.objects.filter(F('some_field').bitand(4) > 0)

2 个答案:

答案 0 :(得分:1)

在Django 1.8(目前未发布)中,您应该annotate使用F()个对象(see this ticket)。

如果您还在开发中,或者有时间等待Django 1.8发货,那么您可以尝试使用F()进行注释,然后使用filter on the annotation

MyModel.objects.\
  annotate(some_annotated_field=F('some_field').bitand(4)).\
  filter(some_annotated_field__gt = 0)

这是Django 1.8中新"Query Expressions" feature的一部分。

答案 1 :(得分:0)

也许您可以将原始SQL视为

     MyModel.objects.raw('SELECT * FROM myapp_mymodel WHERE (col & 4) >0;')