2017-09-28 5 views
1

Cette question est similaire à cette question (Model name of objects in django templates) mais pas la même chose.Comment obtenir le nom d'un modèle de classe dans le modèle django

Je veux savoir comment obtient le nom de la classe Models (dans ce cas, «Apple»), ou à tout le moins retourner une chaîne que je peux passer.

Model.py

django.db import models 
    class Apple(models.Model): 
     ..... 

apple.html

<p>Sorry, no {{ ***Model class name**** }}</p> 

Un exemple dans le navigateur ::: " Désolé, pas d'Apple "

EDIT

Certains extr Conditions:

  1. s'il n'y a pas d'objet créé à partir du modèle, d'où le « Désolé, pas de pommes »
  2. Comment ce genre souple de sorte que vous pouvez utiliser le même modèle pour tout type de fruit.
+0

Pouvez-vous préciser dans quelle mesure votre question est différente? Par exemple, si vous passez une instance de 'Apple', alors' apple .__ class __.__ name__' vous donnera '' Apple ''. – user6731765

+0

Bien sûr, pas de problème. Il y a deux questions que je voudrais couvrir: 1. Si le n'est pas des objets de ce modèle. Je sais que cela semble bizarre, mais si vous vouliez avoir une liste des pommes, mais il n'y a pas de pommes, d'où le «Désolé, pas de pomme». 2. Si vous souhaitez réutiliser le modèle pour plusieurs modèles, par ex. poire/ananas/banane/etc J'espère que cette aide. Merci encore. – TheSadPrinter

Répondre

2

Si vous passez un objet à votre modèle, et que vous voulez faire ce traitement dans le modèle et non pas dans les vues, une approche est de créer les éléments suivants template tag:

@register.filter 
def get_class(value): 
    return value.__class__.__name__ 

et obtenir le nom avec

{{apple|get_class}}