Hallo Experten,
ist es irgendwie möglich eine im View ausgelesene Formvariable (durch request.Post.get...) in einem Model in models.py zu verwenden?
lg djangothoto
Formvariable in View an model übergeben? -Django-
-
- User
- Beiträge: 24
- Registriert: Freitag 10. September 2010, 10:12
Nobody is perfect!
@djangothoto: Die Frage ist etwas zu allgemein gehalten. Welchen Wert willst Du wie in einem Model verwenden? Und was meinst Du mit "einem Model in models.py"? Dort werden die Model-Klassen üblicherweise definiert, aber die Exemplare davon existieren ja nicht in dem Modul, sondern da wo man sie erstellt oder wo Funktionen/Methoden aufgerufen werden, die solche Exemplare als Rückgabewerte haben.
-
- User
- Beiträge: 24
- Registriert: Freitag 10. September 2010, 10:12
Ich probiere es mal etwas deutlicher zu erklären:
Ich habe eine Form, welche folgendes Attribut besitzt:
Dieses lese ich mittels folgenden Code in meiner view ein:
Nun ist meine Frage ob ich dieses 'kosteniter', welches mir hier zurückgegeben wird, in einer Funktion meiner Modelklasse verwenden kann um damit beispielsweise zu rechnen?
Ich hoffe jetzt ist meine Frage besser formuliert!
lg
Ich habe eine Form, welche folgendes Attribut besitzt:
Code: Alles auswählen
kosteniter = forms.DecimalField()
Code: Alles auswählen
if configform.is_valid():
...
kosten = request.POST.get('kosteniter')
Ich hoffe jetzt ist meine Frage besser formuliert!
lg
Nobody is perfect!
@djangothoto: Hatten wir den Zugriff auf Form-Daten nicht schonmal? Warum gehst Du über `request.POST`, wenn Du doch ein `form` mit den Werten hast!?
Zur eigentlichen Frage: Wenn Du etwas in einer Methode verwenden willst, muss es entweder Teil des Objekts sein, oder als Argument übergeben werden. Wenn Du solche Fragen stellst, solltest Du vielleicht vorher oder nebenher unabhängig von Django ein wenig Grundlagen über objektorientierte Programmierung lernen.
Zur eigentlichen Frage: Wenn Du etwas in einer Methode verwenden willst, muss es entweder Teil des Objekts sein, oder als Argument übergeben werden. Wenn Du solche Fragen stellst, solltest Du vielleicht vorher oder nebenher unabhängig von Django ein wenig Grundlagen über objektorientierte Programmierung lernen.
-
- User
- Beiträge: 24
- Registriert: Freitag 10. September 2010, 10:12
Hallo Leute,
erstmal hab ich mir das Tutorial angeschaut und durchgemacht!
Mit dem Tutorial hatte ich keine größeren Probleme.
Ich möchte eigentlich ein Attribut, aus meiner views.py welches von meiner Form stammt, und per request.Post.get ausgelesen wird zum berechnen hernehmen.
forms.py
views.py
Soweit funktioniert das auch!
Das Problem ist, dass ich diese Berechnung für alle Objekte in meiner Modelklasse machen möchte.
Wenn ich nun mit einer for-schleife über alle Objekte iteriere und sie berechnen lassen möchte, gibt mir mein return entweder den letzten berechneten Wert zurück, da die vorherigen überschrieben werden, oder der return gibt mir eine liste von allen berechneten Werten zurück.
So berechnet sich das ganze gerade:
Das doofe an der Sache ist, dass wenn ich mein ergebnis jetzt mit
ausgeben lasse, es mir für alle Objekte der Modeklasse die berechneten Ergebnisse in einer liste ausgibt.
Deshalb hatte ich gefrag ob man evtl. 'kosten' in seine Modelkasse in models.py übergeben kann um jeden Wert genau dem Objekt zuzuordnen zudem es gehört.
So soll es am Ende aussehen:
Objekt1 (erg)=1200
Objekt2 (erg)=2000
und nicht so:
Objekt1 (erg)=[1200, 2000]
Objekt2 (erg)=[1200,2000]
Ich hoffe ihr hilft mir! (Ich weiss ich bin blutiger Anfänger aber ich habe in keinem tutorial oder in keinem Codeschnippsel etwas vergleichbares gefunden)
Vielen Dank
djangothoto
erstmal hab ich mir das Tutorial angeschaut und durchgemacht!
Mit dem Tutorial hatte ich keine größeren Probleme.
Ich möchte eigentlich ein Attribut, aus meiner views.py welches von meiner Form stammt, und per request.Post.get ausgelesen wird zum berechnen hernehmen.
forms.py
Code: Alles auswählen
kosteniter = forms.DecimalField()
Code: Alles auswählen
kosten = request.POST.get('kosteniter')
#...
#erg = somethingelse * kosten
# hierbei ist zu beachten, dass somethingelse ein wert von meiner Modelklasse ist, der bei jedem Objekt in meiner Modelklasse unterschiedlich sein kann
Das Problem ist, dass ich diese Berechnung für alle Objekte in meiner Modelklasse machen möchte.
Wenn ich nun mit einer for-schleife über alle Objekte iteriere und sie berechnen lassen möchte, gibt mir mein return entweder den letzten berechneten Wert zurück, da die vorherigen überschrieben werden, oder der return gibt mir eine liste von allen berechneten Werten zurück.
So berechnet sich das ganze gerade:
Code: Alles auswählen
ergebnis = [kosten * 300 * Modelklasse.somethingelse for Modelklasse in Modelklasse.objects.all()]
Code: Alles auswählen
return render_to_response('path/meintemplate.html', {'ergebnis':ergebnis})
Deshalb hatte ich gefrag ob man evtl. 'kosten' in seine Modelkasse in models.py übergeben kann um jeden Wert genau dem Objekt zuzuordnen zudem es gehört.
So soll es am Ende aussehen:
Objekt1 (erg)=1200
Objekt2 (erg)=2000
und nicht so:
Objekt1 (erg)=[1200, 2000]
Objekt2 (erg)=[1200,2000]
Ich hoffe ihr hilft mir! (Ich weiss ich bin blutiger Anfänger aber ich habe in keinem tutorial oder in keinem Codeschnippsel etwas vergleichbares gefunden)
Vielen Dank
djangothoto
Nobody is perfect!
@djangothoto: Na dann erstell doch einfach eine Liste die nicht nur das Ergebnis der Multiplikation enthält, sondern ein Tupel aus Objekt und dem zugehörigen Ergebnis.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Du solltest die Daten nicht direkt verwenden! form validieren und auf clean data zugreifen...djangothoto hat geschrieben:Code: Alles auswählen
kosten = request.POST.get('kosteniter')