2010-01-13 5 views
0

"처분"이있는 모델과 "세일즈맨"이있는 모델이 있습니다. 나는 모든 세일즈맨의 평균 할인을 받고 싶다. 하지만 어떻게 값에 액세스 할 수 있습니다 - 내가 장고 쉘을 실행할 때Django 값으로 주석 달기 : 값에 액세스하는 방법?

Disposal object has no attribute sm__fname

쿼리가 잘 실행 :

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) 

지금이 오류를 얻을 : 는 여기에 내가 노력하고있어인가? 대단히 감사합니다!

답변

1

첫째로 values을 사용하면 사전의 목록을 제공합니다., 모델 개체가 아닙니다. 각 s에는 sm_whatever이라는 특성이 없으므로 사전 키가 있습니다. 그래서이 시도 :

s['sm__lname'] 

그러나, 나는 전혀 여기 values를 사용할 필요가 보이지 않는 것을 말해야한다. 당신은 실제 물체를 받고 더 나을 것 :

sm = Disposal.objects.annotate(average_discount=Avg('discount')).order_by('-discount') 

후 일반적으로 관련 관련 개체에 액세스 : s.fname.