我有一个带有“处置”的模型和带有“推销员”的模型。 我想获得每个推销员的平均折扣。 这是我正在尝试的:
sm = Disposal.objects.annotate(average_discount=Avg('discount')).values('average_discount','sm__fname','sm__lname').order_by('-discount')
for s in sm:
data[0] = data[0]+s.sm__fname+','+s.sm__lname+','+str(s.average_discount)
现在我收到了这个错误:
处置对象没有属性 sm__fname
当我在django shell中执行它时,查询运行正常 - 但是如何访问这些值? 非常感谢你!
答案 0 :(得分:1)
首先,正如the documentation所述,使用values
会为您提供词典的列表,而不是模型对象。因此,每个s
都没有属性sm_whatever
,它有一个字典键。所以试试这个:
s['sm__lname']
但是,我必须说我根本不需要在这里使用values
。你最好只得到实际的物体:
sm = Disposal.objects.annotate(average_discount=Avg('discount')).order_by('-discount')
然后正常访问相关的相关对象:s.fname
。