Django api计算响应次数

时间:2014-10-27 16:28:17

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

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

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

我在这里使用休息框架将数据发送到我的前端。现在我的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个问题,包含多项选择响应,选项保存在模型的响应列中。

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

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

编辑:

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

检查来自viewsets的@detail_route或@list_route,具体取决于您是否希望同时针对所有问题针对所有问题显示此信息。

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