Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
Django: agrupa y luego calcula la suma de los valores de la columna a través de la consulta

tengo un modelo:

 lifecycle_status_choice = ( ('Lead', 'Lead'), ('Opportunity', 'Opportunity'), ('Customer', 'Customer'), ) bill_status_choice = ( ('Paid','Paid'), ('Pending','Pending'), ('Partially Paid','Partially Paid'), ) class Bill(models.Model): company_name = models.ForeignKey(Contact, on_delete=models.CASCADE) grand_tot = models.DecimalField(max_digits=9, decimal_places=2) status = models.CharField(max_length=100, choices=bill_status_choice) lifecycle_status = models.CharField(max_length=100, choices=lifecycle_status_choice) ...

que tiene un fk para:

 class Contact(models.Model): associated_company = models.CharField(max_length=100) ...

Vistas.py

 ... from bills.models import Bill from django.db.models import Sum def home(request): data = Bill.objects.all().order_by('date') context = { 'data ':data , } return render(request, 'home.html',context)

Gráficos front-endjs:

 const ctx = document.getElementById('myChart').getContext('2d'); const myChart = new Chart(ctx, { type: 'doughnut', data: { labels: [ {% for data in data %} '{{data.company_name}}', {% endfor %} ], datasets: [{ label: '# of Votes', data: [{% for data in data %} {{ data.grand_tot }}, {% endfor %}],

El problema: estoy usando charts.js en mi plantilla de front-end y estoy tratando de mostrar un gráfico en el que, a medida que un usuario crea nuevos nombres de empresas, el gráfico debe mostrar la cantidad total agrupada por nombres de empresas. ¿Cómo lo lograría?

por ejemplo: creo dos facturas para la empresa "xyz" con montos: $100 y $200 || & crear una factura para la empresa "abc" con un monto de $100. Quiero que el gráfico agrupe los montos de las facturas "xyz" y muestre $300 (es decir, 100+200) || & "abc" = $100

Para su información, soy consciente de que estoy usando algo completamente incorrecto en la función de vista, pero es algo que probé. Gracias

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede .annotate(…) [Django-doc] con:

 from django.db.models import Sum Contact.objects.annotate( bills_total=Sum('bill__grand_tot') )

Los objetos de Contact que surgen de este QuerySet tendrán un atributo adicional .bills_total .

Puede filtrar esto con como satus pagado con:

 from django.db.models import Q , Sum contacts = Contact.objects.annotate(bills_total=Sum('bill__grand_tot', filter=Q(bill__status='Paid')))

Por lo tanto, puede, por ejemplo, renderizar esto con:

 {% for contact in contacts %} {{ contact.associated_company }}: {{ contact.bills_total }} {% endfor %}

o conviértalo en una lista de diccionarios de Python, por ejemplo, y luego devuélvalo como un blob JSON.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!