1

我正在使用 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'
}]

我已经尝试过响应()。使用它我可以发送一个字符串,但不能发送一个数组。

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

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

1 回答 1

0

更新答案:

您可以通过使用基础 APIView 类来实现这一点。下面是示例代码:

  1. 视图.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. 视图.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. 序列化程序.py:
class LabelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Label
        fields = [
            'field1',
        ]
于 2020-05-05T03:39:37.973 回答