2015-04-01 56 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 }}