モデル:
class Subjects (models.Model):
name = models.CharField(max_length=100)
places = models.CharField(max_length=100)
class Student (models.Model):
name = models.CharField(max_length=40)
lastname = models.CharField(max_length=80)
subjects = models.ManyToManyField(Subjects, blank=True)
上記のモデルを使用すると、Djangoはappname_student_subjectsを作成します。
appname_student_subjectsテーブルは、たとえば次のようになります。
id | student_id | subjects_id
-----------------------------------------
1 | 1 | 10
2 | 4 | 11
3 | 4 | 19
4 | 5 | 10
...
~1000
どうすればsubjects_idフィールドにアクセスし、subjects_idが上の表に存在する回数を数えることができますか(そしてそれを使って何かをすることができます)。例:ID 10のサブジェクトが2回存在する場合、テンプレートには2が表示されます。結果に「len」を使用する必要があることはわかっていますが、subject_idフィールドにアクセスする方法がわかりません。外部キーを使用して、forループで次のように実行しています。
results_all = Students.objects.filter(subject_id='10')
result = len(results_all)
結果をテンプレートに渡してforループ内に表示しますが、外部キーではないため、機能しません。