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

标签 python django django-queryset

是否可以只过滤在 bitand 之后大于零的字段的记录?像这样的东西:

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

最佳答案

在 Django 1.8(当前未发布)中,您应该能够使用 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)

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

关于python - 检查 F 对象的结果是否大于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480385/

相关文章:

python - 素数 python

python - 向现有模型添加新字段 - django.db.utils.ProgrammingError : column {field} does not exist

Django + PostgreSQL : creating a database (what privileges to grant)

django - 跨 2 个 FK 到同一个表的相关对象的总和,有条件

python - Django get() 是否对values() 执行数据库查询?

Django查询: How to order posts by amount of upvotes?

python - 我怎样才能摆脱pylab直方图中的线

python - Django:如何一次更新多个记录?

python - 如何重复for循环

python - django - 类型错误 : coercing to Unicode