Python Django Rest框架在请求中获取JSON对象,并在ListCreateAPIView中解析

Python Django Rest框架在请求中获取JSON对象,并在ListCreateAPIView中解析,python,django,python-3.x,django-rest-framework,django-request,Python,Django,Python 3.x,Django Rest Framework,Django Request,我正在使用Django Rest Framework进行一个项目,在该项目中,我需要发出一个post请求,在该请求中,我需要将JSON对象与其他字段一起传递给TextField,如何传递JSON对象,如下所示: { "no_of_svc": 3, "svc1": { "name": "details", "imagePullPolicy": "IfNotPresent", "versions": { "v1": { "name": "det

我正在使用Django Rest Framework进行一个项目,在该项目中,我需要发出一个post请求,在该请求中,我需要将JSON对象与其他字段一起传递给TextField,如何传递JSON对象,如下所示:

{
"no_of_svc": 3,
  "svc1": {
    "name": "details",
    "imagePullPolicy": "IfNotPresent",
    "versions": {
      "v1": {
        "name": "details-v1",
        "image": "example-details-v1"
      }
    },
    "port": {
      "port": 9080,
      "name": "http"
    }
  },
  "svc2": {
    "name": "ratings",
    "versions": {
      "v1": {
        "name": "ratings-v1",
        "image": "example-ratings-v1"
      },
      "v2": {
        "name": "ratings-v2",
        "image": "example-ratings-v2"
      },
      "port": {
        "port": 9080,
        "name": "http"
      }
    }
  },
  "svc3": {
    "name": "reviews",
    "versions": {
      "v1": {
        "name": "reviews-v1",
        "image": "example-reviews-v1",
        "containerPort": 9080
      },
      "v2": {
        "name": "reviews-v2",
        "image": "example-reviews-v2"
      },
      "port": {
        "port": 9080,
        "name": "http"
      }
    }
  }
}
然后在泛型的create方法中解析它

这是我的模型:

services = (
    ('Single', 'Single'),
    ('Multiple', 'Multiple'),
)


class DeploymentOnUserModel(models.Model):
    deployment_name = models.CharField(max_length=256, )
    credentials = models.TextField(blank=False)
    project_name = models.CharField(max_length=150, blank=False)
    project_id = models.CharField(max_length=150, blank=True)
    cluster_name = models.CharField(max_length=256, blank=False)
    zone_region = models.CharField(max_length=150, blank=False)
    services = models.CharField(max_length=150, choices=services)
    configuration = models.TextField()
    routing = models.TextField()

def save(self, **kwargs):
    if not self.id and self.services == 'Multiple' and not self.routing and not self.configuration:
        raise ValidationError("You must have to provide routing for multiple services deployment.")
    super().save(**kwargs)

我不理解json和DeploymentOnUserModel模型之间的关系,您如何准确地反序列化您的json?您可以使用json.dumps(您的_json)将json转换为字符串,但每次从中获取数据时都应该使用json.loads(您的_字段_和_json_字符串)。实际上,Hi@ElioMaisonneuve,我的模型中有一个textField,因为这个字段用户需要传递一个JSON对象。嗨@AlexK.,那么我如何才能获得JSON对象中各种键的值,例如**no_of_svc**?@AbdulRehman这就是在textField中编写JSON的方式:model_obj.configuration=JSON.dumps(您的_JSON)(之后别忘了保存模型对象)这就是从中获取数据的方式:configuration=json.loads(model_obj.configuration)(您从json获取dict)和no_of_svc=configuration['no_of_svc'](现在是dict-就像处理常规dict一样处理它)。