2017-11-03 17 views
-1

に基づいてRawSQL注釈をフィルタリングするためにどのようにジャンゴにこのような何かをすることは可能です:Djangoのクエリセット:クエリセットフィールド

MyModel.objects.annotate(
    val=RawSQL(
     "SELECT COUNT(*) FROM another_model_table where some_field= %s", 
      (a_field_from_MyModel) 
     ) 
    ) 

ありがとう!

+1

https://docs.djangoproject.com/en/1.11/topics/db/aggregation/#cheat-sheet理にかなっていますが、私 – souldeux

答えて

0

あなたはこのような何か行うことができます。

MyModel.objects.annotate(
    val=RawSQL(
     """SELECT COUNT(*) FROM another_model_table 
      where some_field=myapp_mymodel.some_field""", 
    ) 
) 
+0

おかげトドルを、エラーが発生する - Djangoはmyapp_mymodel.some_fieldの部分に不満です - あなたは説明できますか? –

+0

'table_name.field_name'にする必要があります。デフォルトでは、Djangoはテーブル名のモデル名の前にアプリ名を付加します。つまり、MyApp内のMyModelにはテーブルmyapp_mymodelがあります。クエリ/データベースをチェックして、正しい名前を取得してください。 – Todor

+1

それはちょうどタイプミスだったことを忘れて、答えに感謝! –

関連する問題