Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Its been two years since this question was asked, so its obviously late for OP. But for others who, like me, had a similar dilemma there exists a <strong>Pistonic</strong> way to get this done.</p> <p>Using the Django example of polls and choices -</p> <p>You will notice that for the ChoiceHandler the JSON response is:</p> <pre><code>[ { "votes": 0, "poll": { "pub_date": "2011-04-23", "question": "Do you like Icecream?", "polling_ended": false }, "choice": "A lot!" } ] </code></pre> <p>This includes the entire JSON for the associated poll whereas just the <code>id</code> for it could have been just as good if not better.</p> <p>Let's say that the <strong>desired</strong> response is:</p> <pre><code>[ { "id": 2, "votes": 0, "poll": 5, "choice": "A lot!" } ] </code></pre> <p>Here's how you would edit the handler to achieve that:</p> <pre><code>from piston.handler import BaseHandler from polls.models import Poll, Choice class ChoiceHandler( BaseHandler ): allowed_methods = ('GET',) model = Choice # edit the values in fields to change what is in the response JSON fields = ('id', 'votes', 'poll', 'choice') # Add id to response fields # if you do not add 'id' here, the desired response will not contain it # even if you have defined the classmethod 'id' below # customize the response JSON for the poll field to be the id # instead of the complete JSON for the poll object @classmethod def poll(cls, model): if model.poll: return model.poll.id else: return None # define what id is in the response # this is just for descriptive purposes, # Piston has built-in id support which is used when you add it to 'fields' @classmethod def id(cls, model): return model.id def read( self, request, id=None ): if id: try: return Choice.objects.get(id=id) except Choice.DoesNotExist, e: return {} else: return Choice.objects.all() </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload