0

我正在使用 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"
      }
    }
  }
}

然后在generics.ListCreateAPIView的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)
4

0 回答 0