「TypeError: QuerySet.annotate() received non-expression(s): True.」が出たときの対処法
今回は「TypeError: QuerySet.annotate() received non-expression(s): True.」が出たときの対処法についてご紹介いたします。
「TypeError: QuerySet.annotate() received non-expression(s): True.」が出たときの対処法
例えば、次のようなannotateを使ったQuerySetを定義したとします。
1 |
sample = TestModel.objects.all().annotate(test_field=Count('book')+100) |
このTestModelのidのリストをvalues_listで取ろうとしたときに私は表題のエラーが出ました。
結論を書くと記載ミスで、私はvalues_listではなくvaluesで取っていたことが原因でした。
1 2 3 4 5 |
# NG sample = TestModel.objects.all().annotate(test_field=Count('book')+100).values('id', flat=True) # OK sample = TestModel.objects.all().annotate(test_field=Count('book')+100).values_list('id', flat=True) |
とんだ凡ミスですね。
終わりに
今回は「TypeError: QuerySet.annotate() received non-expression(s): True.」が出たときの対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません