如何通过template_tag获取对象的名称?

时间:2015-04-01 17:53:26

标签: python django django-templates templatetags

我想通过模板标签传递对象的名称,但是我收到了这个错误:

'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

我的模板标签如下所示:

在我的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 {}

我做错了什么?

2 个答案:

答案 0 :(得分: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倒错了,至少对我来说是这样的。

答案 1 :(得分:0)

您可以使用

等模板标记
@register.filter
def my_func(obj):
    return obj.__class__.__name__

在模板中使用它:

{{ obj | my_func }}