2012-04-21 8 views
2

Я создал handler.py и хочу написать метод: getBooksForUser(). Этот метод вернет мне все книги, выпущенные пользователем. В документации указано:django Piston: Как я могу определить пользовательские методы в обработчике?

В дополнение к этим вы можете определить любые другие методы, которые вы хотите. Вы можете использовать эти , включив их имена в директиву полей, а по при этом функция вызывается одним аргументом: экземпляр модели . Затем он может вернуть что-либо, а значение будет использоваться как значение для этого ключа.

В полях я написал атрибуты книг, которые хочу вернуть. Я должен включить здесь имя метода (getBooksForUser)?

, пожалуйста, дайте мне пример кода, если это возможно.

ответ

1

Я знаю, что это не отвечает на вопрос о пользовательских методах, но, возможно, помогает решить вашу проблему.

URLs:

(r'^books\.json$', Resource(BookHandler)), 
(r'^books/(?P<user_id>[0-9]+)\.json$', Resource(BookHandler)), 

обработчика:

from piston.handler import BaseHandler 
    from myapp.models import Book 

    class BookHandler(BaseHandler): 
     allowed_methods = ('GET',) 
     model = Book 

     def read(self, request, user_id=None): 
      base = Book.objects 
      if user_id: 
       return base.filter(user_id=user_id) 
      return base.all() 

я получил пример из документации here:

+0

Мне это нравится. Этот подход намного лучше, поскольку он ясен и ясен, чем рекомендация django-piston добавления пользовательских методов через поля? Чувствует себя очень глупым. –

Смежные вопросы