2014-02-19 48 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编辑文档 –