Django查询集:如何基于查询集字段过滤RawSQL注释?

4
在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
1个回答

4
你可以这样做:
MyModel.objects.annotate(
    val=RawSQL(
        """SELECT COUNT(*) FROM another_model_table 
            where some_field=myapp_mymodel.some_field""",
    )
)

谢谢Todor,我明白了,但是我遇到了一个错误——Django对于myapp_mymodel.some_field这部分不满意——你能解释一下吗? - PG_185
1
默认情况下,Django会在模型名称前面添加应用程序名称作为表名前缀,因此MyApp中的MyModel将具有表名“myapp_mymodel”,因此应该使用“table_name.field_name”。请检查您的查询/数据库以获取正确的名称。 - Todor
1
忘了吧,那只是个打错字,谢谢你的回答! - PG_185

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接