使用DRF发送字符串数组作为响应

时间:2020-05-05 02:18:25

标签: arrays string django-rest-framework

我正在使用Django Rest Framework,并且想发送一个字符串数组作为响应,如下所示:

['data2','data3']

这些数据是从模型中动态生成的,在该模型中,仅使用筛选标准'field1'选择对应于键'field3'='type1'的值 如果以下是我模型中的数据:

[{
'field1':'data1',
'field2':'nodata1',
'field3':'type2'
},
{
'field1':'data2',
'field2':'nodata2'
'field3':'type1'
},
{
'field1':'data3',
'field2':'nodata3',
'field3':'type1'
}]

我尝试了Response()。并使用它可以发送字符串,但不能发送数组。

注意:我不想生成如下所示的JSON响应。

    [{
        "field1": "data2"
    },
    {
        "field1": "data3"
    }]

1 个答案:

答案 0 :(得分:0)

更新答案:

您可以使用基本的APIView类来实现。下面是示例代码:

  1. views.py:
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Label

class LabelList(APIView):
    def get(self, request):
        response = []
        labels = Label.objects.all()
        response = [label.field1 for label in labels]
        return Response(response)

------------旧答案-------------

使用generics.ListAPIView在数组中提供数据,并使用序列化器仅包含field1。

让我们看一下示例代码。

  1. views.py:
# I am assuming your data to be a label, you can use any name for the class.
class LabelList(generics.ListAPIView):
    serializer_class = LabelSerializer

    def get_queryset(self):
        # For perform any filters based upon loggedin user
        return Label.objects.filter(owner=self.request.user)

  1. serializers.py:
class LabelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Label
        fields = [
            'field1',
        ]