2013-01-22 2 views
1

je le modèle suivant:moteur Google app et modèles django: entité passant ids au moteur du modèle

class Messages(db.Model): 
    name: db.StringProperty() 
    ... 

qui utilise le champ ID fourni par le magasin de données Google App Engine comme une clé unique, et peuvent être obtenus par:

message = Message() 
... 
message.put() 
... 
id = message.key().id() 

Je voudrais maintenant à la liste des messages en utilisant le système de template Django:

messages = db.Messages.all() 
self.response.out.write(template.render('page.html', 'messages': messages)) 

Et dans le 'page.html':

{% for message in messages %} 
    {{message.name}} 
    {{message.id}} 
    .... 
{% endfor %} 

Cependant, le 'message.id' est toujours vide dans la boucle au-dessus. Comment puis-je transmettre les identifiants d'entité au système de gabarit afin que je puisse les utiliser dans la page Web? Merci.

Répondre

2

Le code du modèle n'est pas différent en ce sens que vous devez toujours accéder à the id instance-method of the key.

Essayez plutôt:

{% for message in messages %} 
    {{ message.name }} 
    {{ message.key.id }} 
    <!-------- ^^^ --> 
{% endfor %} 

La syntaxe, si vous utilisez des modèles jinja2 (au lieu de modèles Django), serait la suivante:

{% for message in messages %} 
    {{ message.name }} 
    {{ message.key().id() }} 
    <!-------- ^^^^^ --> 
{% endfor %} 
+0

Great! Merci, bernie. –

+0

Vous êtes le bienvenu. – bernie