Whitie hat geschrieben: ↑Samstag 2. April 2022, 10:44
Warum nimmst du immer Punkte
?
Nun ja, weil ich das ganze anscheinend immer noch nicht verstanden habe (Ich habe sogar 'kategorie_zeile' ausprobiert - aber mit 'zaehler-kategorie_zeile' und Ähnlichem - aber eben mit einem Unterstrich). Also zum Verständnis:
'kategorie_zeile' steht für den Namen einer Variablen, Klasse oder eines Feldes ...?
'kategorie.zeile' bezieht sich auf das Feld innerhalb eines moduls? und
'kategorie__zeile' benutze ich, da das Feld 'zeile' in dem verbundenen modul 'Kategorie ' zu finden ist und nicht in 'Zaehler'?
Whitie hat geschrieben: ↑Samstag 2. April 2022, 10:44
P. S. Funktioniert das mit den Optionen im Formular jetzt eigentlich?
Ja, wunderbar - der Hinweis ist wohl verlorengegangen
da tauchen aber die nächsten beiden Probleme auf:
Ich will die Rückmeldung der besagten Abfrage jetzt speichern:
Code: Alles auswählen
def optionen(req, slug):
kategorie = get_object_or_404(Kategorie, slug=slug)
form = AuswahlForm(kategorie=kategorie)
user=get_fake_user()
zaehler = get_object_or_404(Zaehler, kategorie=kategorie, user=user)
if req.method == 'POST':
form = AuswahlForm(req.POST, kategorie=kategorie)
if form.is_valid():
zaehler.optionen=form.cleaned_data['optionen']
#zaehler.save()
return HttpResponse(zaehler.optionen)
... der Befehl "zaehler.save()" erzeugt die Fehlermeldung: "sub-select returns 5 columns - expected 1"
Und dann noch was Schwieriges:
Ich habe ja schon darauf hingewiesen, dass ich das mit der Objektorientierung wohl auch noch nicht so ganz begriffen habe. Heute nacht hatte ich aber eine Offenbarung und da wäre es schön, wenn ihr mir da auf die Sprünge helfen könntet:
Im view "aufgaben" erzeugt
Code: Alles auswählen
zahl1, zahl2, result =aufgabenstellung(modul.id, user.jahrgang)
ja die Aufgabe. "aufgabenstellung(modul.id, user.jahrgang) liefert z.B. die Funktion "addieren" zurück:
Code: Alles auswählen
AUFGABEN = {
1: ergaenzen,
2: addieren,
3: subtrahieren,
}
def aufgabenstellung(modul_id, jg):
return AUFGABEN[modul_id](jg, 3)
def addieren(jg, stufe):
zahl1=random.randint(5, 45)
zahl2=random.randint(5, 45)
...
return zahl1, zahl2, zahl1+zahl2
def aufgabe(req, slug):
...
zahl1, zahl2, result =aufgabenstellung(modul.id, user.jahrgang)
Jetzt muss ich als nächstes dafür sorgen, das die Aufgaben entsprechend den angewählten Optionen und entsprechend dem Jahrgang und der Stufe erstellt werden. Zu diesem Behufe bestehen meine Aufgaben aus verschiedenen Typen. Z.B. müssen die 5.Klässer nur Längen, Massen und Zeiteinheiten umwandeln, später kommen Flächen und Volumeneinheiten dazu. Aufgaben zu Längen sind dann Typ=1, Zeit: Typ=2, Masse: Typ=3, Flächen Typ=4 und Volumen Typ=4.
Die Funktion "def einheiten_umwandeln(5) gibt mir also eine Aufgabe Typ 1-3 zurück und bei jg=9 Aufgaben des Typs 1-5.
Wenn ich das mit der objektorientierung kann ich doch jetzt, wenn ich "def einheiten_umwandeln("")" dafür sorgen, dass ich "typ_anfang=1, typ_ende=3) zurückgeliefert bekomme und bei "def einheiten_umwandeln("mitn Volumeneinheiten") typ_anfang=1 und typ_ende=5 ... oder habe ich da was falsch verstanden. Ich hatte schon angefagen nur für diese Voreinstellungen 35 eigene Funktionen aufzusetzen - das muss ich doch eigentlich nicht? (Habe ich das gut genug erklärt?)
PS. Ich bin ja zur Zeit an der Côte d`Azur und habe nur mein kleines neues Surface dabei, habe es aber geschafft, auch auf diesem meine "Gits zu commiten" (heißt das so?). Macht es für euch Sinn, wenn ich meinen Code in Github freigebe?