django rest框架后嵌套json

django rest框架后嵌套json,json,django-rest-framework,Json,Django Rest Framework,我在sqlserver上有一个表 ext_id is number, dealer_code is string, dealer_name is string 我需要发布这个json { "ext_id": 1, "dealer": { "dealer_code" : "D1" "dealer_name": "Dealer1",

我在sqlserver上有一个表

ext_id is number,
dealer_code is string,
dealer_name is string
我需要发布这个json

{
    "ext_id": 1,
    "dealer": {
        "dealer_code" : "D1"
        "dealer_name": "Dealer1",
    }
}
models.py

class reqid(models.Model):
    ext_id = models.IntegerField(primary_key=True)
    dealer_code = models.CharField(max_length=10, db_column="dealer_code")
    dealer_name = models.CharField(max_length=30, db_column="dealer_name")
    class Meta:
        db_table = 'table_test'

    def __str__(self):
        return self.ext_id
序列化程序.py

class ReqSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = reqid
        fields = ['ext_id', 'dealer_code','dealer_name']
views.py

class testView(viewsets.ModelViewSet):
    queryset = reqid.objects.all()
    serializer_class = ReqSerializer

    def post(self, request, format=None):
        reqid = request.data.get("reqid")
        dealer_code = request.data['dealer']['dealer_code']
        dealer_name = request.data['dealer']['dealer_name']
        data = {'reqid': reqid, 'dealer_code': dealer_code, 'dealer_name': dealer_name}
        serializer = ReqSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
当我尝试PostJSON时,我得到了

HTTP 400 Bad Request
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "detail": "JSON parse error - Expecting ',' delimiter: line 5 column 3 (char 60)"
}
如果我发布简单的json,比如:

{
    "ext_id": 1,
    "dealer_code": "D1",
    "dealer_name": "Dealer1"
}
一切正常。加载嵌套json应该更改哪些内容和位置

我是初学者,请具体说明:)

更新

Thx@Vishal Singh

现在我必须添加更多的嵌套“资产”

如何保存扇区名称(我向数据库中添加了列)

当我添加到views.py时

sector_name = request.data['asset']['sector']['name']
在serialize.py中

class SectorField(serializers.Field):

    def to_representation(self, value):
        ret = {
            "sector_name": value.sector_name
        }
        return ret

    def to_internal_value(self, data):
        ret = {
            "sector_name": data["name"],
        }
        return ret
我明白了


给定的JSON无效。在D1后面加一个逗号,像这样
“D1”,
并删除
“Dealer1”
之后的多余逗号。有效的json应该是
{“ext\u id”:1,“dealer”:{“dealer\u code”:“D1”,“dealer\u name”:“Dealer1”}
。Thx,我更改了它,现在我得到了{“dealer\u code”:[“此字段是必需的],“dealer\u name”:[“此字段是必需的。”]}Thx:)它正在工作
class SectorField(serializers.Field):

    def to_representation(self, value):
        ret = {
            "sector_name": value.sector_name
        }
        return ret

    def to_internal_value(self, data):
        ret = {
            "sector_name": data["name"],
        }
        return ret
HTTP 400 Bad Request
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "sector": [
        "This field is required."
    ]
}