我正在研究一种情况,当用户发送带有数据的发布请求时,数据将存储在表中并响应该表中的所有对象。
我正在尝试在JsonResponse
中实现django-rest-framework
。
我创建了两个模型字段,分别为ListFields
,并序列化了查询集以进行响应。
但是,当服务器发送响应而不是列表项时,它们将显示为字符串值。
这是我的代码
models.py:
from django.db import models
from djongo.models import ListField
class Post(models.Model):
title = models.TextField()
cast = ListField()
scenes = ListField()
views.py:
from rest_framework.response import Response
from rest_framework.views import APIView
from app1.models import Post
from app1.serializers import PostSerializer
class CreateView(APIView):
def post(self, request):
data = request.POST
post = Post(**data)
post.save()
dat = Post.objects.all()
print(dat)
serializer = PostSerializer(dat, many=True)
return Response(serializer.data)
serializers.py:
from rest_framework import serializers
from app1.models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
输出:
[
{
"id": 1,
"title": "['This is title']",
"cast": "['1,2,3']",
"scenes": "['4,5,6']"
},
{
"id": 2,
"title": "['This is title']",
"cast": "['10,20,30']",
"scenes": "['40,50,60']"
},
{
"id": 3,
"title": "['This is title']",
"cast": "['10,20,30']",
"scenes": "['40,50,60']"
}
]
此处的演员和场景字段显示为字符串而不是列表。
顺便说一句。我正在使用MongoDB,并且列表字段未保存为数组。它们被保存为字符串,其中各项之间用逗号分隔。
我要去哪里错了?我应该怎么做才能使字段作为列表字段而不是字符串表现出来?
答案 0 :(得分:1)
您不是以DRF方式进行操作:(正如 Daniel Roseman 所述,您应该使用序列化程序来保存它们。无论如何,请尝试以下代码段>
class CreateView(APIView):
def post(self, request):
post_serializer = PostSerializer(data=request.data)
post_serializer.is_valid(True)
post_serializer.save()
return Response(post_serializer.data)
答案 1 :(得分:0)
问题在于您考虑请求并保存请求的方式。正如JPG所建议的,如果将响应序列化后将其另存为对象,那将不是问题。