Django Rest Framework Получить объект JSON в запросе и проанализировать в ListCreateAPIView - PullRequest
0 голосов
/ 26 июня 2018

Я работаю над проектом с Django Rest Framework, в котором мне нужно сделать запрос на публикацию, в котором мне нужно передать объект 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 generics.ListCreateAPIView ?

Вот моя модель:

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)
...