我正在尝试在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'))
答案 0 :(得分:0)
对于您的模型来说,这不是一个很好的结构,创建单独的Question和Choice类可能会更容易。 The Django tutorial实际上使用这种类型的应用程序作为示例...看一下该指南
答案 1 :(得分:0)
检查来自viewsets的@detail_route或@list_route,具体取决于您是否希望同时针对所有问题针对所有问题显示此信息。
这将允许您定义自定义端点以请求您要求的信息。为此,您可能还需要定义自定义serializer以传递额外数据,或者filter如果您想按问题,用户等进行过滤。