Vor allem, lassen Sie mich für mein Englisch entschuldigen - es ist nicht meine Muttersprache.Mehrere Argumente für das Rendern der Vorlage übergeben
Ich habe folgende Modelle:
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)
Ich brauche Gruppen von Studenten zu machen, seine Monitore und Menge des Schülers in jeder Gruppe. ersten beiden Aufgaben zu machen ist kein Problem:
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 %}
Aber wenn es darum geht, für jede Gruppe Menge von Studenten Rendering Ich bleibe stecken.
Nach SQL läßt
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"
Fragen sind Menge von Studenten zählt in bestimmten Gruppe:
Wie man dorthin Menge von Studenten statt mit Django ORM für jede Gruppe, so die Vorlage folgende Informationen übertragen:
- Gruppenname: Mega-Nerds
- Anzahl der Studenten: 8
- Monitor: John Doe
...
- Gruppenname: Nice guys
- Anzahl der Studenten: 11
- Monitor: John Appleseed
- Wie Daten über die Anzahl der Schüler an die entsprechende Gruppe übergeben werden.
Danke.
aktualisieren
Nach @Gocht Beratung, benutzte ich ManyToManyField, so meine models.py
sieht nun
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')
auch, wie vorgeschlagen, ich habe hinzugefügt Dekorateur Group
Klasse:
@property
def get_students_qty(self):
return self.students.all().count()
so jetzt kann ich Anzahl der Schüler in jeder Gruppe erhalten, so:
Aber ich frage mich immer noch - ist es möglich, die Anzahl der Schüler in der Gruppe ohne Dekorateur zu bekommen?Immerhin hat Group
Klasse students
Feld ...
Sorry, ich war nicht klar darüber, was erforderlich ist. Ich habe meine Frage bearbeitet, bitte beachten Sie, es zu überprüfen, vielen Dank –
@mr_bulrathi bearbeitet – Gocht