0

提供された両方の例を使用して、TastyPie にネストされたリソースを実装しようとしました。そのうちの 1 つが失敗し、その方法や理由がわかりません。また、そのうちの 1 つがある程度機能します。

これは私が使用したコードを切り取ったものです:

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)

私の具体的な使用例は、次のような URL を持つことであり、これが行うことは、特定の ID を持つ に属する/api/v1/schools/<school_id>/departmentsリストを取得することです。学校に 1 つの学科がある場合、すべてが機能しますが、学校に 2 つ以上の学科がある場合、エラー メッセージが表示されます。departmentsschoolMore than one resource is found at this URI.

TastyPie は、リソース ID を渡すときにリソースのリストをサポートしていませんか、またはこれを修正するにはどうすればよいですか?

4

1 に答える 1