2012-04-26 6 views
5

Es folgt die einfache Datenbankmodell ich habe:drucken Sie das appengine Modell Entity-ID im HTML-Template

class Notes(db.Model): 
    text = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

Jetzt in der URL-Handler, i auf die Vorlage alle Noten senden wie folgt:

class MainPage(webapp2.RequestHandler): 
    def get(self): 
    notes = Notes.all() 
    self.render_template("index.html", {'notes':notes}) 

In der Vorlage i jinja2 Template-Engine verwende, möchte ich die id jeder der Noten gedruckt werden, so dass ich einen Link bearbeiten einbetten können, etwa wie folgt aus:

{% for note in notes %} 
<p> 
{{ note.text }} <br> 
{{ note.date }} <br> 
(<a href ="edit/{{note.key.id}}">edit </a>) 
{% endfor %} 

Aber das Problem ist, ich sehe alles nicht gedruckt, anstelle von note.key.id ich nach dem docs über herekey Klasse stellt einen eindeutigen Schlüssel für eine Datenbank Entität und dies hat eine Methode id, seinen einen numerischen Wert. Für eine einzelne Note aus der Sammlung von Noten möchte ich die id der Notiz.

Wenn ich die Django Templating Engine verwende, bekomme ich die Werte {{ notes.key.id }} gedruckt, aber mit jinja2 sehe ich es nicht.

Wie kann ich das tun?

Antwort

11

ersetzen Nun die href Linie mit den folgenden:

(<a href ="edit/{{note.key().id()}}">edit </a>) 

Dies soll genug sein.

+0

Ich habe es gerade getestet, in meinem Fall musste ich Ihre Lösung wie folgt anpassen: '{{job.key.id()}}' (** key **, nicht * key() *), mit Python 2,7, Kolben, jinjia2, ndb ... – firepol