Django:如何使用字段组合的不同出现次数来注释查询?

问题描述

理想情况下,我想使用 Count 聚合器来计算两个字段的不同外观,而不仅仅是一个

q = Tag.objects.annotate(success=Count(['artifact__event__session','artifact'],distinct=True))

但这似乎是不允许的。 我想出了将要计算以下不同组合的字段连接起来的hacky 解决方案:

q = Tag.objects.annotate(success=Count(Concat('artifact__event__session','artifact'),distinct=True))

但这似乎不是正确的做法。 有没有更好的办法?


更多背景信息:

实际查询更像是:

q = Tag.objects.annotate(success=Count(Concat('artifact__event__session',filter=Q(artifact__event__success=True,artifact__event__user=user),distinct=True))

含义:

“对于每个标签,给我用该标签标记的工件和包含该工件的会话的不同会话-工件组合的数量,其中属于该用户的事件是成功的”

模型为:

class Artifact(models.Model):
    tags = models.ManyToManyField(Tag)
    ...

class Event(models.Model):
    artifact = ForeignKey(Artifact)
    session = ForeignKey(Session)
    success = BooleanField()
    user = ForeignKey(User)
    ...

class Session(models.Model):
    ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...