es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtuve la fecha de inicio y fecha final del usuario. Quiero devolver el precio del producto vendido y su cantidad en función de los pedidos vendidos diariamente. ¿Cómo?

models.Order.objects.filter(purchasedate__range=[from_date, to_date])

today_total = 0
quant = 0
for values in daterangeorder:
    today_total += values.price
    quant += values.quantity

return response.Response({
    "from_date": from_date,
    "to_date": to_date,
    "Amount Sold": str(today_total),
    "Count": str(quant)
})

Este es el resultado:

   {
    "from_date": "2021-11-19",
    "to_date": "2021-11-23",
    "Amount Sold": "27000",
    "Count": "9"
}

Quiero como esto (cantidad de productos vendidos día a día):-

{
    fecha: “'2021-10-20”,
    cantidad: 20,
    precio_total_vendido: 5000.00
},
{
    fecha: “'2021-10-21”,
    cantidad: 4,
    precio_total_vendido: 300.00
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la producción de salida deseada de la cuenta de productos vendidos día a día, se puede utilizar group_by para agrupar los pedidos por fecha de compra y luego calcular la cantidad y el precio total vendido para cada día.

    El código sería algo así:

    from django.db.models import Sum
    from django.db.models.functions import TruncDate
    
    orders = models.Order.objects.filter(purchasedate__range=[from_date, to_date]) \
        .annotate(date=TruncDate('purchasedate')) \
        .values('date') \
        .annotate(count=Sum('quantity'), total_price_sold=Sum('price')) \
        .order_by('date')
    
    result = []
    for order in orders:
        result.append({
            'date': order['date'].strftime('%Y-%m-%d'),
            'count': order['count'],
            'total_price_sold': order['total_price_sold']
        })
    
    return response.Response(result)
    

    En este código, primero anotamos la consulta de pedidos con la fecha de compra truncada sólo a día usando la función TruncDate. Luego agrupamos los pedidos por fecha de compra y calculamos la cantidad y el precio total vendido para cada día usando la función Sum. Finalmente, ordenamos el resultado por fecha y lo formateamos como una lista de diccionarios con los campos deseados.

    Tenga en cuenta que el campo date se formatea usando la función strftime para que coincida con el formato de salida deseado.

Comments are closed.