2 Stimmen

GAE - Wie bearbeite / aktualisiere ich den Datenspeicher in Python

Ich habe dieses Datastore-Modell

class Project(db.Model)
projectname = db.StringProperty()
projecturl = db.StringProperty()

class Task(db.Model)
project = db.ReferenceProperty(Project)
taskname= db.StringProperty()
taskdesc = db.StringProperty()

Wie kann ich den Wert von taskname bearbeiten? Angenommen, ich habe task1 und möchte ihn in task1-project ändern

2voto

gene Punkte 41

Oops Entschuldigung, Hier ist der formatierte Code:

taskkey = self.request.get("taskkey")
taskid = Task.get(taskkey)
query = db.GqlQuery("SELECt * FROM Task WHERE key =:taskid", taskid=taskid)

if query.count() > 0:
 task = Task()
 task.taskname = "task1-project"
 task.put()

übrigens, jetzt habe ich es verstanden. Ich habe task=Task() in task = query.get() geändert und es hat funktioniert.

Danke für die Hilfe übrigens.

1voto

Alex Martelli Punkte 805329

Angenommen, es liegt eine Instanz t von Task vor (z. B. von einer get-Operation auf der db), können Sie die gewünschte Änderung vornehmen, indem Sie z. B. t.taskname = t.taskname + '-project' ausführen (falls Sie "eine '-project' an das anhängen möchten, was zuvor vorhanden war). Schließlich müssen Sie t wahrscheinlich auch wieder in den Speicher .put bringen, natürlich (aber wenn Sie mehrere Änderungen vornehmen, müssen Sie ihn nicht nach jeder einzelnen Änderung zurücksetzen - nur wenn Sie fertig sind!).

0 Stimmen

Hallo! Vielen Dank für deine Antwort. Ich verwende diesen Code, aber es passiert immer noch nichts. taskkey = self.request.get("taskkey") taskid = Task.get(taskkey) query = db.GqlQuery("SELECt * FROM Task WHERE key =:taskid", taskid=taskid) if query.count() > 0: task = Task() task.taskname = "task1-project" task.put()

2 Stimmen

Dein Code ist nicht formatiert (bearbeite deine Antwort so, dass der Code schön formatiert ist), aber offensichtlich erzeugst du eine völlig neue und nicht zusammenhängende Task-Entität (mit einem völlig neuen und nicht zusammenhängenden Schlüssel natürlich) und setzt sie -- das wird den originellen in keinster Weise verändern, aber deine Behauptung, dass "nichts passiert" ist schwer falsch (schau auf dein Dashboard!!!), jetzt hast du eine weitere Entität vom Kind Task (genau wie du spezifiziert hast). Warum änderst du nicht dein originelles, wie ich sagte, sondern machst stattdessen eine völlig Neue?!?!?

-1voto

Dominic Bou-Samra Punkte 13921

Der einfachste Weg ist wahrscheinlich die Verwendung der Admin-Konsole. Lokal lautet der Link:

http://localhost:8080/_ah/admin

Und wenn Sie es hochgeladen haben, ist es das Dashboard:

http://appengine.google.com/dashboard?&app_id=******

Hier ist ein Link:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X