noisefloor hat geschrieben: ↑Dienstag 9. Januar 2024, 17:56
las sich sehr so, als wäre das manuell erstelltest HTML
Stimmt, erwischt. Es ist ganz einfach so, dass ich mich für meinen Code geschämt habe. Die Schülerinen und Schüler können unter "Profil" ihre Daten einsehen, aber nur zwei Einträge ändern. Da ist es mir nicht gelungen eine form zu erstellen. Aber wenn du schon fragst (und ich habe hier ja eh schon so viel Pfusch gepostet - da kommt es da auch nicht mehr drauf an
). Also der ganze Code:
Code: Alles auswählen
<p>An deinem Profil kannst du nur den Namen deiner Klasse ändern und außerdem kannst du noch auswählen, ob du auf der Übersichtseite alle Details angezeigt bekommen möchtest - alle anderen Daten kann nur dein Lehrer/deine Lehrerin ändern.</p>
<table>
<tr>
<td>username:</td><td> {{user}}</td></tr>
<tr>
<td>Name:</td><td> {{schueler.vorname}} {{schueler.nachname}}</td></tr>
<tr>
<tr>
<form action="/profil/" method="POST">
{% csrf_token %}
<td>{{profil_form.klasse.label}}:</td>
<td>{{profil_form.klasse}}
<button type="submit">ändern</button></td>
</form></tr>
<tr>
<td>Jg:</td><td> {{schueler.jg}}</td></tr>
<tr>
<td>angemeldet seit:</td><td> {{user.date_joined|date:"d.m.y H:i"}}</td></tr>
<tr>
<td>Halbjahr:</td><td> {{schueler.sj}}/{{schueler.hj}}</td></tr>
<tr>
<td>Kurs:</td><td> {{schueler.kurs}}</td></tr>
<tr>
<td>Stufe:</td><td> {{schueler.stufe}}</td></tr>
{% if schueler.schule %}
<tr>
<td>Schule:</td><td> {{schueler.schule}}</td></tr>
{%endif%}
<tr>
<td>Lerngruppe:</td>
{% if schueler.gruppe %}
<td> {{schueler.gruppe.name}}</td></tr>
<td>bei:</td><td>{{schueler.gruppe.lehrer.profil.vorname}}{%if schueler.gruppe.lehrer.profil.vorname == "Herr"%}n{%endif%} {{schueler.gruppe.lehrer.profil.nachname}}</td></tr>
{%else%}
<td>keine</td></td></tr>
{%endif%}
<tr>
<form action="/profil/" method="POST">
{% csrf_token %}
<td>Details anzeigen:</td>
<td><input type="Checkbox" name="details" checked />
<input type="submit" value="ändern">
</form></tr>
</td>
</tr>
</table>
... und das model:
Code: Alles auswählen
class Profil(models.Model):
user = models.OneToOneField(User, related_name='profil', on_delete=models.CASCADE )
nachname = models.CharField(max_length=30)
vorname = models.CharField(max_length=30)
klasse = models.CharField(max_length=10)
# diese Felder werden erst ausgefüllt, wenn ein Schüler seine Lerngruppe wählt
schule = models.ForeignKey(Schule, related_name='schule1', null= True, blank=True, on_delete = models.SET_NULL)
zweite_schule = models.ForeignKey(Schule, related_name='schule2',null= True, blank=True, on_delete = models.SET_NULL)
gruppe = models.ForeignKey(Lerngruppe, null= True, blank=True, on_delete = models.SET_NULL, related_name='gruppe')
jg = models.PositiveSmallIntegerField(validators=[MinValueValidator(1), MaxValueValidator(13)])
kurs= models.CharField(max_length=1, choices=wahl_kurs.choices, default=wahl_kurs.E_KURS,)
# werden beim Erstellen eingestellt
stufe = models.PositiveSmallIntegerField(default=5) #, editable=False)
sj = models.SmallIntegerField(default=0)
hj = models.SmallIntegerField(default=0)
katmax = models.IntegerField(default=0) # die Zeilennummer die höchsten gewählten Aufgabenkategorie
#voreinst = models.IntegerField(default=1) # hier können Voreinstellungen gesetzt und abgefragt werden
voreinst = models.JSONField(blank=True, null=True, default=dict)
details = models.BooleanField(default = True)
def __str__(self):
return f"{self.pk}, {self.vorname} {self.nachname}, {self.klasse}"
class Meta:
verbose_name = 'Profil'
verbose_name_plural = 'Profile'