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 

これは、クエリに一致するオブジェクトが 1 つだけの場合に機能するはずです。一致するオブジェクトが複数ある場合は、例外がスローされます。使用している場合は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 に答える