我有一個出版社注冊銷售的模型。通過以下代碼,我可以得到書名和客戶購買的數量:
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
我現在需要的是一個回圈,因此每個具有相同書名的條目,求和或添加該數量。關于如何做到這一點的任何想法?
uj5u.com熱心網友回復:
對于 Django,要完全在資料庫中執行此操作,聽起來您需要使用以下方法進行聚合.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)
uj5u.com熱心網友回復:
如果book是模型的ForeignKeya ,則[Django-doc]Book s更有意義:.annotate(…)Book
from django.db.models import Sum
books = Book.objects.annotate(
total_quantity=Sum('sale__quantity')
)
for book in books:
print(f'{book} {book.total_quantity}')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411443.html
標籤:
上一篇:將序串列示為2個平方和
下一篇:請幫我更正C程式中的代碼
