2010-06-24 50 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