0
제공된 두 예제를 사용하여 TastyPie에서 중첩 리소스를 구현하려고했습니다. 그 중 하나가 실패하고 어떻게 또는 왜, 그리고 그들 중 하나가 다소 잘 작동하지 않습니다.TastyPie의 중첩 된 리소스
class ParentResource(ModelResource):
children = fields.ToManyField(ChildResource, 'children')
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/children%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_children'), name="api_get_children"),
]
def get_children(self, request, **kwargs):
try:
bundle = self.build_bundle(data={'pk': kwargs['pk']}, request=request)
obj = self.cached_obj_get(bundle=bundle, **self.remove_api_resource_names(kwargs))
except ObjectDoesNotExist:
return HttpGone()
except MultipleObjectsReturned:
return HttpMultipleChoices("More than one resource is found at this URI.")
child_resource = ChildResource()
return child_resource.get_detail(request, parent_id=obj.pk)
이제 내 구체적인 사용 사례는이 어떻게 할 것인지의 school
에 속하는 departments
의 목록을 얻을 수 있습니다 /api/v1/schools/<school_id>/departments
같은 URL을 사용하는 것입니다 :
이
내가 사용했습니다 냈다 코드입니다 특정 ID로 학교에 부서가 1 개있는 경우 모든 것이 작동하지만 학교에 2 개 이상의 부서가있는 경우 오류 메시지가 표시됩니다.More than one resource is found at this URI.
TastyPie는 리소스 ID를 전달할 때 리소스 목록을 지원하지 않습니까?