相关疑难解决方法(0)

Django - annotate-clause 中的相等性检查

在我的 Django 1.9 项目中,我试图输出如下内容:

return MyModel.objects.values(...).\
               annotate(flg = ExpressionWrapper(F('rgt') - F('lft') > 0, 
                        output_field = BooleanField()))
Run Code Online (Sandbox Code Playgroud)

这会产生AttributeError: 'bool' object has no attribute 'resolve_expression'错误。

我尝试使用Case-when语法重写它:

return MyModel.objects.values(...)\
              .annotate(flg = Case(When(F('rgt') - F('lft') > 0, then = True, 
               output_field = BooleanField())))
Run Code Online (Sandbox Code Playgroud)

这一次,我以TypeError: __init__() takes either a Q object or lookups as keyword arguments错误告终。我搞不清楚了。有任何想法吗 ?

django

8
推荐指数
2
解决办法
1536
查看次数

标签 统计

django ×1