django - 从具有多个外键的模型到另一个表的同一列实现group by
问题描述
以下情况
ModelA(django.db.models.Model):
abc = ForeignKey('modelB', related_name="from abc")
def = ForeignKey('modelB', related_name="from def")
modelB(django.db.models.Model):
有没有办法实现GROUP_BY
通孔ModelA.objects.values('some_magic_link_to_Model_B').annotate()
而不是ModelA.objects.values('abc', 'def').annotate()
(结果是手动构建结果列表,因为它会导致两个键的分组结果)还是我必须考虑添加中间 M2M 转换?
解决方案
Okay, since i have a fixed modelB
instance i want to aggregate, i found a solution.
identifier_pk=django.db.models.Value(fixedInstanceOfmodelB__modelC.pk, output_field=IntegerField())
stats = ctx.order_by().annotate(
group_key=identifier_pk,
).values('group_key').annotate(
whatever=asd,
)
but that just the specific case where i only want to get aggregated stats for a single instance of modelB
, is there a generic way to get a GROUP_BY
with a single key e.g. modelB.pk
推荐阅读
- java - Native Script App build:gradle build 时面临的问题
- php - 如何在数据库中注册会话中保存的数据?
- java - 如何以编程方式加载 JDK 模块?
- python - 将美元转换为日元的 Python 编码失败
- android - 有没有办法在不停止播放的情况下以编程方式执行 YouTube 全屏操作?
- asp.net-core - 如何添加 Swashbuckle AspNetCore XmlCommentsDocumentFilter
- sails.js - Sails:如何在sails v1.0 中为一对一关联插入数据?
- python - 将导入的python模块提取到文件中?
- flutter - 无法运行颤振演示应用程序给出错误
- mongodb - AWS S3 与 MongoDB