2009-12-20 5 views
0

을의 검색어 정렬 시도 :내가이 같은 모델을 가지고

class Kaart(models.Model): 
    name = models.CharField(max_length=200, verbose_name="Kaardi peakiri", help_text="Sisesta kaardi pealkiri (maksimum tähemärkide arv on 38)", blank=False, null=False) 
    url = models.CharField(max_length=200, blank=False, null=False, verbose_name="Asukoha URL", help_text="Täisasukoht (http://www.domeen.ee/kaart/)") 
    kirjeldus = models.TextField(max_length=500, verbose_name="Kommentaar", help_text="Informatsioon/viide tegijale (mitte kohustuslik)") 
    date_added = models.DateField(help_text="lisamis kuupäev", verbose_name="Kuupäev", blank=False, null=False, default=datetime.date.today()) 
    neg = models.PositiveIntegerField(default=0) 
    pos = models.PositiveIntegerField(default=0) 
    def diff(self): 
     return self.pos - self.neg 

내보기 - 주석 처리 된 부분주의 사항 :

def index(request): 
    #a = Kaart.objects.all() 
    a = Kaart.objects.all().order_by('diff') 
    return render_to_response('index.html', { 
     'k':a, 
    }, context_instance=RequestContext(request)) 

및 템플릿 :

{% for kaart in k %} 
<tr> 
     <td class="tc"><span class="nr">1</span></td> 
     <td> 
       <a href="#">{{ kaart.name }}</a> 
       <a href="{{ kaart.url }}" id="full-url" title="k.kirjeldus">URL</a> 
     </td> 
     <td class="tc">{{ kaart.shortdate }}</td> 
     <td class="tr"> 
       <span class="pos">{{ kaart.diff }}</span> 
       <a href="#"><img src="hinda/img/thumbs-up.jpg" /></a> 
       <a href="#"><img src="hinda/img/thumbs-down.jpg" /></a> 
     </td> 
</tr> 
{% endfor %} 

그리고 오류 난을 get : 렌더링 중에 예외가 발생했습니다 : 'diff'키워드를 필드로 확인할 수 없습니다. 선택 사항은 date_added, id, kirjeldus, name, neg, pos, url입니다.

은 행

입니다 강조 {%가 케이 %에서 kaart에 대한}

재미있는 것은 내가이 부분에 대해 언급 할 때 기압 주석하고 모든 것이 잘 작동되는 정렬의 검색어를 주석 이잖아 때문이다. 여기서 뭐가 틀린거야?

diff로이 쿼리를 어떻게 정렬 할 수 있습니까?

앨런. 당신이처럼해야 할 것

답변

1

나는 믿습니다

a = Kaart.objects.all().extra(
    select = {'diff': 'pos - neg'} 
).order_by('diff') 
0

order_by 인수가 데이터베이스의 SQL 인터프리터에 의해 확인할 수 있어야합니다. diff 메서드는 Python으로되어 있으므로 SQL 수준에서는 사용할 수 없습니다. 바레시의 대답은 좋아 보인다.

관련 문제