django rest框架后嵌套json
我在sqlserver上有一个表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",
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."
]
}