4

場所に関するコメントを取得したいとしましょう。私はこの要求をしたい:

/places/{PLACE_ID}/コメント

TastyPie でこれを行うにはどうすればよいですか?

4

1 に答える 1

11

Tastypie のドキュメントの例に従って、次のようなものをplacesリソースに追加します。

class PlacesResource(ModelResource):

    # ...

    def prepend_urls(self):
        return [
            url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/comments%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_comments'), name="api_get_comments"),
    ]

    def get_comments(self, request, **kwargs):
        try:
            obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs))
        except ObjectDoesNotExist:
            return HttpGone()
        except MultipleObjectsReturned:
            return HttpMultipleChoices("More than one resource is found at this URI.")

        # get comments from the instance of Place 
        comments = obj.comments # the name of the field in "Place" model

        # prepare the HttpResponse based on comments
        return self.create_response(request, comments)           
     # ...

アイデアは、/places/{PLACE_ID}/commentsURL とリソースのメソッド (get_comments()この例では) の間の URL マッピングを定義することです。メソッドは のインスタンスを返す必要HttpResponseがありますが、Tastypie が提供するメソッドを使用してすべての処理を行うことができます (によってラップされcreate_response()ます)。tastypie.resourcesモジュールを見て、Tastypie がリクエスト、特にリストを処理する方法を確認することをお勧めします。

于 2012-10-15T08:03:04.227 に答える