0

たとえば、「ClassRoom」という名前のモデルと「Student」という名前のモデルがあり、StudentがClassRoomと外部キーの関係にあるとします。

Class Student(models.Model):
    classroom = models.ForeignKey(ClassRoom, related_name='student')

基本的なDjangoクエリを使用して、どのクラスルームに最も多くの生徒がいるのかを見つけるにはどうすればよいですか。答えを見つけるために私がしたことは、もっと簡単なはずだと思われます。

max = 0    
for c in ClassRoom.objects.all():
        if c.student.count() > max:
            print 'ID: %s' % c.id
            max = c.student.count()

次に、最後に印刷されたIDを取得し、クラスルームIDに対して.get()クエリを実行します。とにかく、アノテーションまたは集計を使用してこれを行うことはできますか?

4

1 に答える 1

0

ClassRoom次のようなものをオブジェクトに追加してみてください。

def num_students(self):
    return Students.objects.filter(classroom=self).count()

classroom明らかに、あなたがそれを呼んだものと交換してください。そうすれば、__maxクエリを使用できるようになります。

免責事項:私はこれを試していませんが、頭の中で機能します:)

于 2012-11-27T18:25:13.383 に答える