gpt4 book ai didi

django - 在这个复杂的查询中,我应该在哪里指定 output_field kwarg?

转载 作者:行者123 更新时间:2023-12-04 02:00:08 27 4
gpt4 key购买 nike

我写了一个小调查应用程序。我有一个查询会在升级到 Django 2.0 时导致异常:

Expression contains mixed types. You must set output_field.



以下是理解查询所需的一些关系(其中 --fk--> 表示外键):
response --fk--> question --fk--> survey
response --fk--> person

这是我的查询:
answered_surveys = SurveyResponse.objects.all()\
.values('fk_question__fk_survey__hash', 'fk_question__fk_survey__name')\
.annotate(
nb_respondants = Count('fk_person', distinct=True),
survey_name = F('fk_question__fk_survey__name'),
survey_hash = F('fk_question__fk_survey__hash')
)\
.annotate(
completion=100*Count('id')/
(F('nb_respondants')*F('fk_question__fk_survey__nb_questions_per_survey'))
)

直到最后一次都很好 annotate ,但我不知道在哪里添加 output_field kwarg 因为我只有 FCount楷模。 Count根据定义输出一个 IntegerField,如果我尝试添加那个 kwarg,F 会提示。

我该如何解决?

最佳答案

感谢@Gahan 的评论,我发现我需要使用 ExpressionWrapper对注释中的 F 个对象执行算术运算。文档 here .

因此,最后一部分变为:

.annotate(
completion=ExpressionWrapper(
100*Count('id')\
(F('nb_respondants')*F('fk_question__fk_survey__nb_questions_per_survey')),
output_field=FloatField()
)

关于django - 在这个复杂的查询中,我应该在哪里指定 output_field kwarg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com