Frage

Hat jemand dynamisch auszuwählen versucht, welche Eigenschaften sie an eine Stelle auf appengine schreiben wollen? Zum Beispiel:

Ich habe eine Web-Formular mit 5 Feldern und jeder gegebenen Benutzer werden einige Teilmenge dieser Felder ausfüllen. Ich poste nur die Felder mit Daten an den Server (z Felder 1,2,4). Auf der Serverseite, wie schreibe ich elegant nur Eigenschaften 1,2 und 4? Die Modellklasse hat eine Funktion, die ein Wörterbuch der Eigenschaftsnamen (Model.properties ()) gibt, aber wie würde ich es Eigenschaftsnamen wählen?

In SQL, würde ich eine Anweisung INSERT oder UPDATE aufzubauen, indem die Felder gegen die Model.properties POSTed passende () Wörterbuch. I am db-Modul-Code in der App Engine SDK aussehen würde, zu sehen, ob die Modellklasse eine Sammlung von Property-Objekten hatte, aber ich kann das Modul auf meiner Festplatte nicht finden (ich bin ein wenig neu zu Python und appengine).

Update: Ich lese trunk / google / appengine / ext / db / init Py, die bestätigt, dass es keine Möglichkeit gibt, um die Eigenschaften als Gruppe zu verweisen. Wer weiß von einer Vermeidung des Problems?

Alle Gedanken?

Update2: Diese Frage wurde auf der Google-Gruppe für App Engine beantwortet: http://groups.google.com/group/google-appengine/browse_thread/thread/b50be862f6d94b6e#

War es hilfreich?

Lösung

Das Python-Modul etwas wie folgt aussehen:

from google.appengine.ext.db import Key
from google.appengine.api.datastore import Get, Put

def edit_item(request, db_id):

    objKey = Key(str(db_id))

    if request.method == 'POST':
        objEntity = Get(objKey)
        for k, v in request.POST.iteritems():
             objEntity[k]=v
        Put(objEntity)
        return HttpResponseRedirect('/')

    query = TestModel.get(objKey)
    return render_to_response('edit.html', ({'modify_data': query,}))

Ihre HTML sollte wie folgt aussehen:

<form method="POST" action="." enctype="multipart/form-data">
  Title: <input type="text" name="title" value="{{modify_data.field1}}"/>
  Text: <input type="text" name="txt" value="{{modify_data.field2}}"/>

  <input type="submit"/>
</form>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top