2012-03-24 143 views
1

在我所做的所有视图中,通常会声明类似“model = Student”或任何其他模型的内容。我想要做的是在模板中显示在模板中显示模型名称

插入学生

。有没有一种简单的方法来做到这一点,而无需在上下文中传递新变量?

我看到这里的一些答案,但他们都不得不改变看法=/

其实我想表明的是: 类元: verbose_name = _(U“学生“)

在模型中,我通过了视图。

+2

可能重复的[对象的型号名称在Django模板](http://stackoverflow.com/questions/6571649/model-name-of-objects-in-django-templates) – 2012-03-24 11:42:47

+0

你见过这个问题吗? http://stackoverflow.com/questions/7432142/django-template-display-model-verbose-names-objects – Ben 2012-03-24 11:53:53

回答

0

Python中的类名存储在任何对象的__class__.__name__属性中。默认情况下,Django不允许您在模板中使用以__(双下划线)开头的属性,因为它表示私有属性。

的根本解决办法是写一个custom template filter

@register.filter 
def classname(obj): 
    return obj.__class__.__name__ 

然后在你的模板中使用它(记得{% load libraryname %}在你的模板在前):

{{ obj|classname }} # Will print the class name of obj 
+1

我明白了,但这里的问题是,我还没有一个对象。我处于空列表视图,并且需要指向插入学生的链接。您的解决方案适用于对象。 我只有一个模型=学生的情况下,我在视图中传递... – StaticX 2012-03-25 00:42:01

+0

我不知道你想要达到什么。 – 2012-03-25 08:31:17