Tastypie: Я хочу получить такие элементы, как «/ place / {PLACE_ID} / comments», но как?

Позволять'скажем, я хочу получить комментарии о месте. Я хочу сделать этот запрос:

/ мест / {PLACE_ID} / комментарии

Как я могу сделать это с TastyPie?

 Dave14 окт. 2012 г., 01:19
является place_id первичным ключом для мест?
 Burak14 окт. 2012 г., 14:01
Да, ПК для мест.

Ответы на вопрос(1)

Решение Вопроса

Следуйте примеру в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)           
     # ...
</pk></resource_name>

Идея состоит в том, что вы определяете отображение URL между/places/{PLACE_ID}/comments URL и метод вашего ресурса (get_comments() в этом примере). Метод должен возвращать экземплярHttpResponse но вы можете использовать методы, предлагаемые Tastypie, чтобы сделать всю обработку (обернутыйcreate_response()). Я предлагаю вам взглянуть наtastypie.resources модуль и посмотреть, как Tastypie обрабатывает запросы, в частности списки.

 kgr15 окт. 2012 г., 12:51
Вы'добро пожаловать :)
 silviomoreto14 нояб. 2012 г., 14:00
Ty! Это мне тоже помогло!
 Burak15 окт. 2012 г., 11:18
Именно то, что мне нужно. Спасибо.

Ваш ответ на вопрос