python - Django:按答案分组 query_set
问题描述
我正在尝试获取以下内容,但是: {'male': 123, 'female': 432, 'other': 12}
从那里我将计算分配总额的百分比:男性:123/567 = 21% 女性:76% [...]
目前,这是我不工作的解决方案。输出不是我所期望的。你能帮助我吗?
def get_gender_distribution(self):
answers = (
Question.objects.filter(
focus=QuestionFocus.GENDER,
survey__event=self.request.event,
survey__template=settings.SURVEY_POST_EVENT,
)
.values('answers')
.annotate(count=Count('answers'))
)
__在里面__
class QuestionFocus(Choices):
AGE = 'age'
楷模:
class Question(TimeStampedModel[...]):
survey = models.ForeignKey(related_name='questions')
type = models.CharField([...])
focus = models.CharField([...])
class Answer(TimeStampedModel):
question = models.ForeignKey(related_name='answers')
response = models.ForeignKey(related_name='answers')
answer = models.TextField([...])
class Survey(TimeStampedModel):
event = models.ForeignKey(related_name='surveys')
template = models.CharField([...])
解决方案
我会做类似的事情:
def get_gender_distribution(self):
answers = Question.objects.filter(
focus=QuestionFocus.GENDER,
survey__event=self.request.event,
survey__template=settings.SURVEY_POST_EVENT,
)
.values('answers')
.annotate(total=Count('answers'))
也许换个角度看:aggregation
推荐阅读
- python - 仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但有一个“Index”实例
- flutter - 可从顶部和底部拖动的可滚动工作表
- javascript - 从两个对象数组追加属性
- html - 如果每个导航元素有元素,则为每个导航元素添加 + 和 - 图标
- windows - 在 Rust 程序中使用 VirtualQueryEx 编辑内存时出现无限循环
- ansi-c - Ansi C如何动态调用一个CONSTANT
- python - 在 Visual Studio Code 中为现有 docker 映像运行 python 脚本
- javascript - nodejs:每当检查复选框时,我都希望将它们添加到我的验证data setter
- html -
- vue.js - Vuetify 数据表单元格样式槽标题属性而不是项目属性