【问题标题】:Django api calculate count of responsesDjango api计算响应计数
【发布时间】:2014-12-22 21:42:47
【问题描述】:

我正在尝试在 django 中进行调查应用。我的模型如下:

class mymodel(models.Model):    
    resptype = models.ForeignKey(Response)
    ques = models.ForeignKey(Question)    
    response = models.CharField(max_length=5, blank=True)

这里我使用 rest framework 将数据发送到我的前端。现在我的api 定义如下:

class mymodelList(APIView):
    def get(self, request, format=None):
        surveydata = mymodel.objects.all()
        serialized_surveydata = mymodelSerializer(surveydata, many=True)
        return Response(serialized_surveydata.data)

在我的应用程序中,我有一组标准的 16 个问题,其中包含多项选择响应,并且选择保存在模型的响应列中。

现在我想要实现的是计算每个问题的响应数。 IE。对于问题 1,一个人回答 1 或 2 等的计数是多少。

我还想知道如何通过来自其余框架的另一个 json 字段发送计算的计数,因为我没有为此数据单独定义任何模型。

编辑:

这个命令完成了我的查询,但我仍然无法弄清楚如何将它作为序列化对象发送到前端。

x = mymodel.objects.values('ques','response').order_by().annotate(number_of_responses=Count('response'))

【问题讨论】:

    标签: django django-models django-rest-framework


    【解决方案1】:

    这对于您的模型来说并不是一个很好的结构,创建单独的 Question 和 Choice 类可能会更容易。 The Django tutorial 实际使用了这种类型的应用程序作为示例...看看那个以获得一些指导

    【讨论】:

      【解决方案2】:

      检查@detail_route 或viewsets 中的@list_route,具体取决于您是否要一次为所有问题显示每个问题的此信息。

      这将允许您定义一个自定义端点来请求您所要求的信息。为此,您可能还需要定义一个自定义 serializer 来传递额外的数据,或者如果您想按问题、用户等进行过滤,您可能还需要定义一个 filter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 2017-07-05
        相关资源
        最近更新 更多