2010-06-24 31 views
0

我想做一个排名申请,它将计算在平台上上传的每门课程的排名。django在表中存储增量数值?

这是一个很好的方法来存储在表中的值,如下载次数和视图的数量吗?

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 

的下载查询不工作,我怎么能够“主动”下载每门课程的数量?

回答

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) 
+0

你是对的!感谢Bernhard! – dana 2010-06-24 12:02:48