我将模型设置为:
class SubItem(models.Model):
name=models.CharField(max_length=100)
price=models.IntegerField()
class Item(models.Model):
owner=models.OneToOneField(User)
class ItemSubItems(models.Model):
item=models.ForeignKey(Item)
subitem=models.ForeignKey(SubItem)
所以现在我希望每个项目都得到"价格"通过" ItemSubItems"与所有子项目相关的子项目类。
我在尝试:
item.itemsubitems_set.subitem_set.aggregate(Sum('price'))['price__sum']
但我收到错误' RelatedManager'对象没有属性' subitem_set'。 这样做的正确方法是什么?
答案 0 :(得分:0)
qs = Item.objects.annotate(pricesum=Sum('itemsubitems__subitem__price'))
应该(我现在还没有尝试过)给你一个所有项目的查询集,每个项目都有一个名为pricesum
的属性,它是相关子项的价格之和。
请阅读here了解更多信息和示例
P.S: 我现在已经尝试过具有类似关系的我的模型(参见here) 并且正确地跨越了这种关系,没有任何错误:
qs = Subject.objects.annotate(mcount=Count('computer_subject__player__user__username'))
for i in qs:
print i.name, i.mcount