0

我想做一个排名应用程序,它将计算上传到平台上的每门课程的排名。

将下载次数和查看次数等值存储在表格中是一种好方法吗?

class Courserate(models.Model):
     course = models.ForeignKey(Courses)
     downloads = models.IntegerField(editable = False, default = 0)
     views = models.IntegerField(editable = False, default = 0)
     positive_votes = models.IntegerField(editable = False, default = 0)
     negative_votes = models.IntegerField(editable = False, default = 0) 

另外,当我尝试获取下载次数时,例如,对于属于特定教室的课程,我应该怎么做?我的意思是,这样的查询:

courses = Courses.objects.filter(classroom = userclass)
downloads = Courserate.objects.filter(course = courses).downloads 

下载查询不起作用,我如何“获取”每门课程的下载次数?

4

1 回答 1

2

我认为像你一样保存数字很好。要使查询返回单个对象(过滤器始终返回查询集),您必须使用get而不是filter

downloads = Courserate.objects.get(course = course).downloads 

如果只有一个对象与您的查询匹配,这应该可以工作,如果有更多匹配项,它将引发异常!如果您正在使用filter,则必须遍历返回的查询集才能访问downloads

courses = Courserate.objects.filter(course = course)
for course in courses:
    print course.downloads # do something with downloads here

如果您想获得多门课程并过滤您的CourseRate对象以获得Courses使用列表__in

courses = Courserate.objects.filter(course__in = courses)
于 2010-06-24T11:09:45.717 回答