我正在使用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"
}]
答案 0 :(得分:0)
更新答案:
您可以使用基本的APIView类来实现。下面是示例代码:
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。
让我们看一下示例代码。
# 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)
class LabelSerializer(serializers.ModelSerializer):
class Meta:
model = Label
fields = [
'field1',
]