如何使用Django Rest Framework和ViewSet对get_queryset()函数进行计数?

2024-06-25 23:17:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在get_queryset()函数中执行一个查询,并反驳一些总计。但是这个函数只返回一个QS对象。我的views.py中有以下代码

    serializer_class = omrActionQueueItemSerializer

    def get_queryset(self):
        omr_action_queue = self.request.query_params.get('omr_action_queue', None)
        status = self.request.query_params.get('status', None)
        queryset = OmrActionQueueItem.objects.all()
        queryset = queryset.filter(omr_action_queue=omr_action_queue)
        queryset = queryset.filter(status=status)
        
        return queryset

这适用于过滤,但如果我计数,我会收到一条错误消息,说我的答案是一个值,而不是QS

这是我的serializer.py:

class omrActionQueueItemSerializer(serializers.ModelSerializer):

    class Meta:
        model = OmrActionQueueItem
        fields = "__all__"

我的最终目标是将我的表格总结如下:

        {
            'total_pending': 19
            'total_complete': 5
            'total_processing': 2
        }

这是my models.py:

class OmrActionQueueItem(models.Model):
    # id created by default
    omr_action_queue = models.ForeignKey(OmrActionQueue, on_delete=models.DO_NOTHING)
    params_content = models.TextField()
    process_content = models.TextField(default=None)
    created_at = models.DateTimeField(default=datetime.now())
    updated_at = models.DateTimeField(null=True)
    status = models.CharField(max_length=50, default="pending")
    enabled = models.BooleanField(default=1)
    deleted = models.BooleanField(default=1)    

Tags: pyselfnonedefaultgetqueuemodelsstatus