Bei meinem Rechenduell will ich die Eingaben speichern. Immer wenn eine neue Aufgabe erstellt wird, wird ein Eintrag im "Duell_Protokoll" erzeugt. In diesem wird die Lerngruppe und die beiden Duellanten gespeichertr und jetzt will ich auch noch die Eingaben und Wertungen speichern. Zunächst wollte ich das einfach in einem Charfield erledigen, zwischenzeitlich fände ich es sinnvoller, bei jeder Eingabe eine Liste (oder Tuple) zu speichern. Dazu ist mir nichts besseres eingefallen als ein JSON Field:
Code: Alles auswählen
class Duell_Protokoll(models.Model):
protokoll = models.ForeignKey(Protokoll, related_name='duellprotokoll', on_delete=models.CASCADE)
gruppe = models.ForeignKey(Lerngruppe, related_name='duellgruppe', on_delete=models.CASCADE)
duellant_1 = models.ForeignKey(Duellant, related_name='duellant_1', on_delete=models.CASCADE)
duellant_2 = models.ForeignKey(Duellant, related_name='duellant_2', on_delete=models.CASCADE)
wertung = models.JSONField()
Code: Alles auswählen
duell_protokoll = Duell_Protokoll.objects.get_or_create(
protokoll = protokoll, gruppe = gruppe, duellant_1 = duellant_1, duellant_2 = duellant_2, wertung =[]
)
Code: Alles auswählen
duell_protokoll.wertung += [duellant.name, str(eingabe), str(duellant.punkte_spiel)]
1. Wird hier, wenn eine zweite Eingabe erfolgt (weil die erste falsch war) eine neue Liste angehängt sondern die bestehende Liste verlängert.
2. Muss ich bei der Aufgabenerstellung schon eine leere Liste in "Wertung" eintragen, sonst erfolgt ein Fehler wenn ich die (eigentlich) erste Liste einfügen will.
3. Will JSON auch keine Decimal akkzeptieren, ich muss die Werte zunächst in Strings umwandeln.
Vielleicht ist meine Rangehensweise ja aber überhaupt nicht sinnvoll?