2013-05-20 1 views
0

J'ai un document mongodb «Post» qui a EmbeddedListField de «commentaires». J'utilise tastypie pour construire la couche API et je veux que les commentaires soient listés avec leurs champs de corps seulement lorsqu'un seul article est demandé. Quand une liste de messages est demandée, je ne veux pas montrer le corps complet du commentaire car cela tuerait la performance de mon application. C'est ce que j'ai dans mon fichier de ressources:Je veux un EmbeddedListField de commentaires à afficher seulement quand je «GET» un seul poste et non quand je «OBTENIR» une liste de messages

comments = tastypie_mongoengine_fields.EmbeddedListField(of='api_core.resources.EmbeddedCommentResource', attribute='comments', full=True, null=True) 

Que puis-je faire à ce sujet? Je ne veux pas créer deux points d'entrée pour 'post_entry' et 'post_list' car ce serait une mauvaise conception pour le consommateur des API.

Répondre

0

J'ai fait une simple vérification dans la méthode Déshydratation:

def dehydrate(self, bundle): 
    if self.get_resource_uri(bundle) != bundle.request.path: 
     bundle.data['comments_count'] = len(bundle.data['comments']) 
     del bundle.data['comments'] 
     bundle.data['user_id'] = bundle.data['user'].data['id'] 
     bundle.data['user_name'] = bundle.data['user'].data['first_name'] 
     bundle.data['user_uri'] = bundle.data['user'].data['resource_uri'] 
     del bundle.data['user'] 
    return bundle 
Questions connexes