2010-01-11 10 views
2

Utilisation de google appengine et de django.Fonction d'appel de modèle django

Chaque fois que j'ai un db.ReferenceProperty() à l'intérieur d'un modèle comme:

class User(db.Model) : 
    name = db.StringProperty() 
    avatar = db.ReferenceProperty(dbImage) 

Ainsi lors de la mise à la page d'un utilisateur, dans le modèle de django JE NE PEUX PAS faire

<div> 
    <span>{{ user.name }}</span> 
    <span>{{ user.avatar.key() }}</span> 
</div> 

Qu'est-ce que Je fais en ce moment écrit un peu de code python avant que les données sortent au modèle qui ressemble à

user.avatarsKey = user.avatar.key() 

Puis

<div> 
    <span>{{ user.name }}</span> 
    <span>{{ user.avatarsKey }}</span> 
</div> 

en éliminant l'appel de fonction. Je n'aime pas ça, parce que je dois le faire dans beaucoup d'endroits et commencer à avoir de l'encombrement. Est-il possible d'invoquer la méthode .key() d'un objet db à l'intérieur du modèle?

Répondre

8

Dans les modèles django, l'appel de fonction est simplement une fonction. dans votre exemple, essayez:

{{ user.avatar.key }} 

Je sais, c'est bizarre. Mais bon, c'est encore pire avec les tableaux/listes:

{{ user.mylist.0 }} 
+1

+1 pour corriger. la liste m'a aussi ébranlé. –

+0

------- ty ------- – bobobobo

+0

Remarquablement cela fonctionne même lorsque l'objet 'avatar' est None. Il ne génère pas d'erreur NoneType ou quoi que ce soit de ce genre. Incroyable. – bobobobo