是否可以仅过滤bitand
大于零后具有字段的记录?类似的东西:
MyModel.objects.filter(F('some_field').bitand(4) > 0)
答案 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;')