まず、私の英語を口実にしましょう。それは私の母国語ではありません。私は学生、そのモニターおよび各グループの生徒の量のグループをレンダリングする必要がレンダリングテンプレートのいくつかの引数を渡す
class Student(models.Model):
student_id = models.IntegerField(primary_key=True)
student_name = models.CharField(max_length=255, default='John Doe')
dob = models.DateField(max_length=8)
class Group(models.Model):
group_name = models.CharField(max_length=40)
monitor = models.ForeignKey(Student)
class Student_Group(models.Model):
student_id = models.ForeignKey(Student)
group_name = models.ForeignKey(Group)
:
は、私は次のモデルを持っています。最初の二つのタスクを作ることは問題ではありません。
views.py:
def group_list(request):
groups = Group.objects.all()
return render(request, 'groups/group_list.html', {'groups': groups})
groups.html
{% for group in groups %}
<p>{{ group.group_name }}</p>
<p>{{ group.monitor }}</p>
{% endfor %}
しかし、それはグループごとに学生の量をレンダリングすることになります、私は立ち往生している。代わりに、DjangoのORMを使用して、グループごとに学生の量を取得する方法
、そのテンプレートは以下となります。SQL続き
は
select count(*) from students_student join students_student_group on students_student.student_id = students_student_group.student_id_id where students_student_group.group_name_id = "Mega nerds"
質問がある特定のグループに学生の量をカウントすることができます
- グループ名:メガオタク 次の情報をレンダリング学生の
- 量:8
- モニター:ジョン・ドウ
...
- グループ名:学生のニースみんな
- 量:11
- モニター:ジョン・アップルシード
- 対応するグループに生徒数に関するデータを渡す方法。
ありがとうございます。
:更新
は@Gochtアドバイスによると、私が示唆したように、私はGroup
クラスにデコレータを追加しました、私のmodels.py
は今も
class Student(models.Model):
student_id = models.IntegerField(primary_key=True)
student_name = models.CharField(max_length=255, default='Василий Пупкин')
dob = models.DateField(max_length=8)
def __str__(self):
return self.student_name
class Group(models.Model):
group_name = models.CharField(max_length=40, primary_key=True)
monitor = models.ForeignKey(Student)
students = models.ManyToManyField(Student, related_name='students')
ように見えるので、のManyToManyFieldを使用しました
@property
def get_students_qty(self):
return self.students.all().count()
これで、各グループの生徒数を取得できます。
{% for group in groups %}
<p>{{ group.group_name }}</p>
<p>{{ group.monitor }}</p>
<p>{{ group.get_students_qty }}</p>
{% endfor %}
しかし、私はまだ疑問に思っています - デコレータを使わずにグループ内の学生数を得ることは可能でしょうか?結局のところ、Group
クラスがstudents
フィールドを持っている...
を申し訳ありませんが、私は必要なものについては不明でした。私は私の質問を編集しました、それを見直すことを検討してください、多くのありがとう –
@mr_bulrathi編集 – Gocht