2015-04-01 49 views
-1

我想通过一个模板标签传递对象的名字,但我得到这个错误:如何通过template_tag获取对象的名称?

'str' object has no attribute 'mymodelone_set' 

我的模型:

class mymodelone(models.Model): 
    name = models.CharField(max_length=50) 
    show = models.ForeignKey('mymodeltwo') 

    def __unicode__(self): 
     return self.title 

class mymodeltwo(models.Model): 
    title = models.CharField(max_length=50) 
    description = models.TextField(blank=True) 

    def __unicode__(self): 
     return self.name 

我的模板标签如下所示:

在my base.html:

{% load my_tags %}{% my_func obj%} 

在我的model_tag.py

register = template.Library() 
@register.inclusion_tag('myapp/widget.html') 
def my_func(obj): 
    param1 = obj.mymodelone_set.all() 
return {} 

我在做什么错?

+4

是'objectName'一个字符串?请显示底层视图。 – alecxe 2015-04-01 17:57:23

+0

嗨@alecxe我写它不好,我编辑的问题,我的意图是直接在标签中写入对象的名称,是否有可能?任何意见,将不胜感激。 – 2015-04-01 18:05:13

+3

@palafox_e其实我们希望看到你的视图代码,比如'obj'来自哪里......? – 2015-04-01 18:08:46

回答

0
class mymodelone(models.Model): 
    name = models.CharField(max_length=50) 
    show = models.ForeignKey('mymodeltwo') 

    def __unicode__(self): 
     return self.name 

class mymodeltwo(models.Model): 
    title = models.CharField(max_length=50) 
    description = models.TextField(blank=True) 

    def __unicode__(self): 
     return self.title 

你把你的self.name/self.title改成了错误的类,至少这就是它对我来说的样子。

0

你可以用你的模板标签一样

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

在你的模板使用它:

{{ obj | my_func }}