我有桌子
class Book(models.Model):
title = models.CharField(max_length=200)
authors = models.ManyToManyField(Individual, related_name="author_for", blank=True, null=True)
illustrators = models.ManyToManyField(Individual, related_name="illustrator_for", blank=True, null=True)
class Unitary_Sale(models.Model):
book = models.ForeignKey(Book)
quantity = models.IntegerField()
unit_price = models.DecimalField(max_digits=15, decimal_places=3)
sale = models.ForeignKey(Sale)
作者或插图画家如何出售报告书?
by_author = {}
for unit_sale in Unitary_sale.objects.all():
author = unit_sale.book.authors
by_authors[author] = (unit_sale.quantity, unit_sale.quantity *unit_sale.unit_price)
Author Qty Amount($)
A 2 20
A&B 3 30
***一本书有很多作者
答案 0 :(得分:2)
请注意在引擎盖下执行的数据库查询的数量。我在代码中访问和迭代数据库关系的简单方法被催眠了,这导致每一个页面有大约900个数据库的查询。
答案 1 :(得分:1)
作者是多对多的,所以你需要嵌套另一个循环。您列出的author
对象,例如:
for unit_sale in Unitary_sale.objects.all():
for x in author:
by_authors[x] = ....
修改:实际上,我注意到您创建author
的方式存在错误。它应该是:
author = unit_sale.book.authors.all()
然后你可以使用for循环迭代所有的Author对象,如上所述。