2013-01-25 17 views
1

Je construis un kiosque de magasin en django et j'ai une vue qui affiche certains produits vendus dans un intervalle de temps comme si;django vues avec django tastypie

 
def product_sold_report(request): 
    response = {} 
    id_list = [] 
    try: 
     _start = _get_parameter(request, "_start") 
    except Exception, e: 
     _start = None 

    try: 
     _end = _get_parameter(request, "_end") 
    except Exception, e: 
     _end = None 

    if _start and _end: 
     orders = Order.objects.filter(created__range=[datetime.datetime.fromtimestamp(float(_start)),datetime.datetime.fromtimestamp(float(_end))]).filter(status = 4).order_by("-created") 
    else: 
     orders = Order.objects.all().filter(status=4).order_by("-created") 

    for order in orders: 
     id_list.append(order.id) 

    for item in OrderItem.objects.filter(order__in = id_list): 
     i = Order.objects.get(id = item.order_id) 
     try: 
      product = Product.objects.get(id = item.product_reference) 
      barcode = product.barcode 
     except Exception,e: 
      barcode = None 



     if item.product_name in response: 
      response[item.product_name]["product_quantity"] += item.quantity 
     else: 
      response[item.product_name] = { 
       "product_quantity":item.quantity, 
       "product_barcode":barcode 


      } 

    return HttpResponse(simplejson.dumps(response), mimetype="text/json") 

Cependant, je veux utiliser un cadre de repos pour que je puisse avoir une application web différent sur une autre requête de serveur cette application et obtenir les mêmes produits vendus résultats, je l'ai considéré django tastypie mais il semble important beaucoup sur les ressources des modèles. Est-il possible d'avoir fait cela en utilisant django tastypie ou django rest framework.

Merci

Répondre

0

Vous n'avez pas besoin d'un service complet reposant obtenir les mêmes résultats. Tant que vos vues retournent des données JSON bien formées, utilisez simplement des modèles d'URL corrects dans votre URL url.py qui correspond à vos fonctions d'affichage.

Vous pouvez concevoir des modèles d'URL comme tastypie/api/v1/products_sold/ Il suffit de travailler avec certains regex - et assurez-vous que les URLS font juste sens

+0

Merci beaucoup Hacking vie pour la réponse, je pense que je vais faire exactement cela parce que je ne peux pas vraiment trouver un moyen d'obtenir django tastypie retourner les données que je voudrais. En passant, pensez-vous que l'écriture des vues personnalisées aura des problèmes de performance? Merci –

+0

Pas si vous vous assurez que vos requêtes sont efficaces. Assurez-vous, lors de l'utilisation de vos données, que vous ayez besoin des données dont vous avez besoin une seule fois, puis examinez des choses comme l'analyse d'un dictionnaire de données qui est retourné. Moins vous frappez le serveur pour plus d'informations, mieux c'est –