2017-09-28 1 views
1

Diese Frage ist dieser Frage ähnlich (Model name of objects in django templates), aber nicht das Gleiche.So erhalten Sie den Namen eines Klassenmodells in Vorlage django

Ich möchte wissen, wie bekommt der Name der Modelle (in diesem Fall 'Apple'), oder zumindest eine Zeichenfolge, die ich übergeben kann.

Model.py

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

apple.html

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

Ein Beispiel im Browser ::: " Leider kein Apple- "

EDIT

Einige extr a Bedingungen:

  1. Was ist, wenn es kein Objekt aus dem Modell, daher die ‚Sorry, keine Äpfel‘
  2. Wie Art diese flexibel, so dass Sie die gleiche Vorlage für jede Art von Obst geschaffen ist verwenden können.
+0

können Sie klären, wie Ihre Frage ist anders? Wenn Sie zum Beispiel eine Instanz von 'Apple' übergeben, dann wird' apple.__ class __.__ name__' Ihnen '" Apple "' geben. – user6731765

+0

Sicher, kein Problem. Es gibt zwei Probleme, die ich behandeln möchte: 1. Wenn das keine Objekte dieses Modells ist. Ich weiß, das hört sich komisch an, aber wenn du eine Listenansicht für Äpfel haben wolltest, aber keine Äpfel, also "Sorry, no apple". 2. Wenn Sie die Vorlage für mehrere Modelle wiederverwenden möchten, z. Birne/Ananas/Banane/etc. Ich hoffe diese Hilfe. Danke noch einmal. – TheSadPrinter

Antwort

2

Wenn Sie ein Objekt zu Ihrer Vorlage vorbei sind, und Sie mögen diese Verarbeitung in der Vorlage tun und nicht in den Ansichten, ein Ansatz ist, die folgenden template tag zu erstellen:

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

und erhalten den Namen mit

{{apple|get_class}}

Verwandte Themen