2012-04-26 11 views
5

A continuación se presenta el modelo de base de datos simple que tengo:imprimir el modelo appengine entidad id en la plantilla HTML

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

Ahora en el controlador de URL, le envío todas las notas a la plantilla de la siguiente manera:

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

En la plantilla que estoy usando jinja2 motor de plantillas, quiero que el id de cada una de las notas que desea imprimir, de modo que pueda incrustar un enlace de edición, algo como esto:

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

Pero el problema es que no veo nada impreso, en lugar de note.key.id De acuerdo con la documentación sobre herekey clase representa una clave única para una entidad de base de datos y esto tiene un método id, es un valor numérico. para una sola nota de la colección de notas, quiero el id de la nota.

Si uso el motor de plantillas django obtengo los valores {{ notes.key.id }} impresos, pero con jinja2 no lo veo.

¿Cómo puedo hacer esto?

Respuesta

11

bien reemplazar la línea href con lo siguiente:

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

Esto será suficiente.

+0

Acabo de probarlo, en mi caso tuve que adaptar su solución de la siguiente manera: '{{job.key.id()}}' (** key **, not * key() *), usando python 2.7, matraz, jinjia2, ndb ... – firepol

Cuestiones relacionadas