Python 当条目具有相同名称时添加
Python add when entries have the same name
我有一个出版登记销售的模型house.with下面的代码,我可以得到书名和客户购买的数量:
a=Sale.objects.all()
for b in a:
print(str(b.book) + ' ' + str(b.quantity))
所以我得到这样的结果:
Del mismo modo en el sentido contrario 15
Sobre el horror 1
Del mismo modo en el sentido contrario 5
Del mismo modo en el sentido contrario 2
Un lápiz labial para una momia 1
La cólera en los tiempos del amor 3
La cólera en los tiempos del amor 1
La cólera en los tiempos del amor 1
El tambor encantado 1
我现在需要的是一个循环,这样每个具有相同书名的条目,总和或加上那个数量。关于如何实现这一点有什么想法吗?
对于 Django,要完全在数据库中执行此操作,听起来您需要 aggregation using .values()
:
for book, total_sales in Sale.objects.values('book').annotate(total_sales=Sum('quantity')).values_list('book', 'total_sales'):
print(book, total_sales)
一般情况下,如果这不仅仅是关于 Django,是使用 collections.Counter
:
books_sold = collections.Counter()
for sale in Sale.objects.all():
books_sold[str(sale.book)] += b.quantity
for book, quantity in books_sold.items():
print(book, quantity)
如果 book
是 ForeignKey
到 Book
模型,那么 .annotate(…)
[Django-doc] 更有意义 Book
:
from django.db.models import Sum
books = Book.objects.annotate(
<strong>total_quantity=Sum('sale__quantity')</strong>
)
for book in books:
print(f'{book} {book.total_quantity}')
我有一个出版登记销售的模型house.with下面的代码,我可以得到书名和客户购买的数量:
a=Sale.objects.all()
for b in a:
print(str(b.book) + ' ' + str(b.quantity))
所以我得到这样的结果:
Del mismo modo en el sentido contrario 15
Sobre el horror 1
Del mismo modo en el sentido contrario 5
Del mismo modo en el sentido contrario 2
Un lápiz labial para una momia 1
La cólera en los tiempos del amor 3
La cólera en los tiempos del amor 1
La cólera en los tiempos del amor 1
El tambor encantado 1
我现在需要的是一个循环,这样每个具有相同书名的条目,总和或加上那个数量。关于如何实现这一点有什么想法吗?
对于 Django,要完全在数据库中执行此操作,听起来您需要 aggregation using .values()
:
for book, total_sales in Sale.objects.values('book').annotate(total_sales=Sum('quantity')).values_list('book', 'total_sales'):
print(book, total_sales)
一般情况下,如果这不仅仅是关于 Django,是使用 collections.Counter
:
books_sold = collections.Counter()
for sale in Sale.objects.all():
books_sold[str(sale.book)] += b.quantity
for book, quantity in books_sold.items():
print(book, quantity)
如果 book
是 ForeignKey
到 Book
模型,那么 .annotate(…)
[Django-doc] 更有意义 Book
:
from django.db.models import Sum
books = Book.objects.annotate(
<strong>total_quantity=Sum('sale__quantity')</strong>
)
for book in books:
print(f'{book} {book.total_quantity}')