djv*_*jvg 7 python django django-queryset
关于 SO 有很多类似的问题,但是这个特定的错误消息没有出现在我的任何搜索中:
AttributeError: 'WhereNode' object has no attribute 'select_format'
Run Code Online (Sandbox Code Playgroud)
当尝试使用annotate()比较(布尔)结果的 Django 查询集时会引发此问题,例如以下简化示例中的gt 查找:
Score.objects.annotate(positive=Q(value__gt=0))
Run Code Online (Sandbox Code Playgroud)
该模型如下所示:
class Score(models.Model):
value = models.FloatField()
...
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
djv*_*jvg 14
这种情况可以使用ExpressionWrapper()来修复
Score.objects.annotate(
positive=ExpressionWrapper(Q(value__gt=0), output_field=BooleanField()))
Run Code Online (Sandbox Code Playgroud)
来自文档:
ExpressionWrapperF()在不同类型的表达式上使用算术时是必要的......
尽管我在文档Q中找不到任何明确的引用,但对象显然也是如此。
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |