2013-01-25 121 views
1

我在django建立一个店亭,我有一个视图,显示一些时间范围内销售的产品如此;django意见与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") 

不过,我想用一个REST框架,这样我可以有另一台服务器上查询这个应用程序不同的Web应用程序,并得到同样的产品卖出的结果,我认为django tastypie,但它似乎主要很多在模型资源上。是否有可能使用django tastypiedjango rest framework完成此操作。

谢谢

回答

0

你不需要一个完整的宁静的服务来获得相同的结果。只要您的视图返回格式正确的JSON数据 - 只需在您的url.py中使用良好的URL模式映射到您的视图函数。

您可以通过精心设计的URL模式就像tastypie/API/V1/products_sold/ 只是一些正则表达式的工作 - 确保网址只是意义

+0

感谢很多黑客人生的答案,我想我会这样做,因为我真的找不到方法让django tastypie返回我想要的数据。顺便说一下,你认为编写自定义视图会有什么性能问题?谢谢 –

+0

如果您确定查询效率很高,请不要使用。确保在处理数据时使用你需要的一次性访问数据,然后查看诸如解析返回的数据字典等内容。你打的服务器越少,其他信息越好 –