我有两个模型类:Blueprint和Workload。
单个蓝图通常是多个工作负载的父级。
我在models.py中定义了它们,如下所示:
class Blueprint(models.Model):
name = models.CharField(max_length=120)
description = models.TextField()
class Meta:
ordering = ["name", ]
class Workload(models.Model):
blueprint = models.ForeignKey(Blueprint)
name = models.CharField(max_length=120)
description = models.TextField()
image = models.CharField(max_length=120)
flavor = models.CharField(max_length=120)
class Meta:
ordering = ["name", ]
我的api.py目前看起来像这样:
class WorkloadResource(ModelResource):
def obj_create(self, bundle, request=None, **kwargs):
return super(WorkloadResource, self).obj_create(bundle, request)
def obj_update(self, bundle, request=None, **kwargs):
workload = Workload.objects.get(id=kwargs.get("pk"))
workload.description = bundle.data.get("description")
workload.name = bundle.data.get("name")
workload.image = bundle.data.get("image")
workload.flavor = bundle.data.get("flavor")
workload.save()
def obj_delete(self, bundle, **kwargs):
return super(WorkloadResource, self).obj_delete(bundle)
def determine_format(self, request):
return 'application/json'
class Meta:
queryset = Workload.objects.all()
resource_name = 'workload'
authorization=Authorization()
class BlueprintResource(ModelResource):
def obj_create(self, bundle, request=None, **kwargs):
return super(BlueprintResource, self).obj_create(bundle, request)
def obj_update(self, bundle, request=None, **kwargs):
blueprint = Blueprint.objects.get(id=kwargs.get("pk"))
blueprint.description = bundle.data.get("description")
blueprint.name = bundle.data.get("name")
blueprint.workloads = bundle.data.get("workloads")
blueprint.save()
def obj_delete(self, bundle, **kwargs):
return super(BlueprintResource, self).obj_delete(bundle)
class Meta:
queryset = Blueprint.objects.all()
resource_name = 'blueprint'
authorization = Authorization()
当我对/ api / blueprint /运行GET方法时,我希望从api获取Workload链接URL,但是,当我运行时:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://127.0.0.1:8000/api/blueprint/1/
我得到的只有:
{"description": "First Blueprint", "id": 1, "name": "Blueprint 1", "resource_uri": "/api/blueprint/1/"}
并且没有提及子Workload网址。
为了获得这个附加链接,指向Workload子项的位置,我需要做出哪些更改?