无法更新 JSON 字段。显示"JSON parse erroR语言 Expecting property name enclosed in double quotes"



我是Django Rest框架的新手。我目前正在制作一个API,该API将获得最喜欢的电视节目,并创建或更新现有的列表,如果有更多电视节目的最爱。所有这些都有一个唯一的account_id。我必须发送这样的JSON回复。

{
  "account_id": "15",
  "shows": [
    {
      "show_id": "19"
    },
    {
      "show_id": "86"
    }
  ]
}

但是,当我尝试提出这样的JSON响应时,

{
    "account_id": 15,
    "shows": [
    {
        "show_id": "9"
    },
    {
        "show_id": "86"
    }
    ]
}

我有错误,

{
  "detail": "JSON parse error - Expecting property name enclosed in double quotes: line 2 column 5 (char 6)"
}

我的型号是:

from django.db import models

class Account(models.Model):
    account_id = models.CharField(max_length=500)

class Show(models.Model):
    show_id = models.CharField(max_length=500)
    user_id = models.ForeignKey(Account, related_name='shows')

我的Views.py是:

from .models import Show, Account
from showapp.serializers import ShowSerializer, AccountSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.parsers import JSONParser
from rest_framework.decorators import api_view

class UserList(APIView):
    parser_classes = (JSONParser,)
    def get(self, request, format=None):
        users = Account.objects.all()
        serializer = AccountSerializer(users, many=True)
        return Response(serializer.data)
    def post(self, request, format=None):
        serializer = AccountSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def delete(self, request, pk, format=None):
        user = self.get_object(pk)
        user.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
@api_view(['GET', 'PUT'])
def user_detail(request, account_id):
    try:
        user = Account.objects.get(account_id=account_id)
    except Account.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)
    if request.method == 'GET':
        serializer = AccountSerializer(user)
        return Response(serializer.data)
    elif request.method == 'PUT':
        serializer = AccountSerializer(user, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我的serializers.py是:

class ShowSerializer(serializers.ModelSerializer):
    class Meta:
        model = Show
        fields = ('show_id',)

class AccountSerializer(serializers.ModelSerializer):
    shows = ShowSerializer(many=True)
    class Meta:
        model = Account
        fields = ('account_id', 'shows')

请帮助我。

也许是这样写的,试试看。

    def post(self, request, format=None):
        serializer = AccountSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

相关内容

最新更新