2014-02-19 49 views
1

我試圖通過評分與Django評級應用程序來訂購一組模型對象。我已經在我的視圖中構建了一個order_by函數,但工作正常,但當我進入評分字段時,我得到此錯誤:「評分值必須是評級實例,而不是」100「。任何想法這個錯誤/錯誤的含義是什麼?Django評分錯誤:「評分值必須是評分實例,而不是」100「?

謝謝!

模板:

<a href="/mylist/?order_by=rating">Order by Rating</a> 

查看:

def Mylist(request):  
    order_by = request.GET.get('order_by', 'created_date') 
    mylist = Mymodel.objects.filter(user=request.user).order_by(order_by) 

    if order_by == "rating": 
     qs = Mymodel.objects.filter(user=request.user).extra(select={ 
     'rating': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Mymodel.rating.range, Mymodel.rating.weight) 
     }) 
     mylist = qs.order_by('-rating') 

    context = {'mylist ': mylist } 
    return render_to_response('mylist.html', context, context_instance=RequestContext(request)) 

型號:

class Mymodel(models.Model): 
    user = models.ForeignKey(User) 
    created_date = models.DateField(auto_now_add=True) 
    type = models.CharField(max_length=50) 
    description = models.CharField(max_length=140, blank=True) 
    rating = RatingField(range=5) 
+0

向我們展示我的Mymodel定義 – Alvaro

+1

請添加Mymodel的定義和錯誤的完整堆棧跟蹤。 –

+0

好的。 Mymodel只是一個普通的課程,有一些不同的領域,其中的領域是一個名爲「評級」的「評級領域」。 – user3199840

回答

1

嘗試重命名額外的屬性 '評級'

queryset = queryset.extra(select={ 
    'myrating': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Mymodel.rating.range, Mymodel.rating.weight) 
}) 
queryset = queryset.order_by('-myrating') 
+0

這對我有用!需要爲django評分@dcrammer編輯文檔 –