
Die Lehrkraft müsste in der letzten Spalte das Feld anklicken können, falls der/die Schüler/in krank oder anderweitig verhindert ist und am Duell nicht teilnehmen kann. Außerdem muss die Lehrkraft vor dem ersten Duell die Schülerinnen und Schüler in Ligen einteilen können (Eintrag in der ersten Spalte). Ich weiß nicht so recht, wie ich das bewerkstelligen kann. Forms passt hier nach meiner Einschätzung nicht, da ich damit ja nur einzelne Einträge in der Datenbank anlegen bzw. ändern kann - nicht aber Einträge für alle Schülerinnen und Schüler einer Gruppe - oder sehe ich das falsch?
Geht das überhaupt, dass ich aus diesem Template Änderungen vornehme?
Mein model:
.
Code: Alles auswählen
class Duell(models.Model):
profil = models.OneToOneField(Profil, related_name='duellprofil', on_delete=models.CASCADE)
gruppe = models.ForeignKey(Lerngruppe, null= True, blank=True, on_delete = models.CASCADE, related_name='duellgruppe')
liga = models.CharField(max_length=1, default="A")
platz = models.SmallIntegerField(null=True, blank=True)
aufsteiger = models.BooleanField(default=False)
abwesend = models.BooleanField(default=False)
spiele = models.SmallIntegerField(default=0)
punkte = models.DecimalField(max_digits=3, decimal_places=1, default=0)
pps = models.DecimalField(max_digits=4, decimal_places=2, default=0)
Code: Alles auswählen
...
<body>
<div class="container">
<table>
<thead>
<tr>
<th >Liga</th>
<th >↑</th>
<th >Platz</th>
<th width= "200px">Name</th>
<th >Spiele</th>
<th >Punkte</th>
<th >PPS</th>
<th >*</th>
</tr>
</thead>
<tbody>
</tr>
{% for zeile in duell_liste %}
<tr class = {{zeile.liga}}>
<td>{{zeile.liga}}</td>
<td>{% if zeile.aufsteiger %}*{%else%}{%endif%}</td>
<td>{% if zeile.platz %}{{zeile.platz}}{%else%}{%endif%}</td>
<td style="text-align: left";>{{zeile.profil.vorname}} {{zeile.profil.nachname|slice:"30"}}</td>
<td>{{zeile.spiele}}</td>
<td>{{zeile.punkte}}</td>
<td>{{zeile.pps}}</td>
<td>{% if zeile.abwesend %}*{%else%}{%endif%}</td>
</tr>
{% empty %}
<tr><td colspan="999"><strong>Es sind noch keine Schüler angemeldet.</strong></td></tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
Code: Alles auswählen
def duell(req, gruppe_id):
gruppe = get_object_or_404(Lerngruppe, pk=gruppe_id)
titel = f"{gruppe.name}, {gruppe.lehrer.profil.vorname} {gruppe.lehrer.profil.nachname}"
schueler_liste = Profil.objects.filter(gruppe__name=gruppe.name).order_by("user__profil__vorname")
for schueler in schueler_liste:
duell, created = Duell.objects.get_or_create(profil = schueler, gruppe = gruppe)
duell_liste = Duell.objects.filter(gruppe=gruppe).order_by("liga", "platz", "profil")
context={'gruppe': gruppe.name,'duell_liste': duell_liste}
return render(req, 'lehrer/rechenduell.html', context)